Я не уверен, насколько глубоко вы хотите начать свою карьеру сетевого программиста Linux, но если вы хотите просто начать работать с сокетами, вероятно, самые простые примеры - это сопряжение производитель/потребитель или сервер Echo. Другим хорошим источником может быть просмотр примеров/заданий из любого количества университетских/колледжских курсов по распределенным вычислениям.
Это можно запустить в паре терминалов на вашем компьютере для тестирования. Создайте два приложения:
Идея аналогична Producer/Consumer.
Я бы начал с разработки простой многопользовательской игры, такой как крестики-нолики:
конечно, я предложил крестики-нолики, но вы можете выбрать другую похожую игру (с простыми правилами). Важная часть состоит в том, чтобы заботиться о многих клиентах, которые также играют парами (для обработки пересылки данных и управления игрой) и отправки состояний (например, списка игр) игрокам.
В этом примере хорошо то, что у вас есть двухуровневый протокол:
Я могу порекомендовать использовать Wireshark - это поможет вам понять, как меняется сетевой трафик.
Книга, которую стоит прочитать, называется "Сетевое программирование Unix" Р. Стивенса: http://www.kohala.com/start/unpv12e.html
Проект, который нужно сделать, - это TCP-прокси или веб-прокси. Сделайте его однопоточным, но, конечно, обработайте несколько соединений. Вы сможете закончить его за неделю работы в свободное время.
Советую найти страницу любого лабораторного курса по компьютерным сетям и решить соответствующие задания. Там вы найдете подробное объяснение проблемы и задания будут в порядке возрастания сложности. Вы можете найти такие страницы, набрав в Google "inurl:edu computer networks lab assignments". (без qoutes)
Вот несколько отличных заданий (с очень подробными объяснениями). Попробуйте выполнить их все в таком порядке
http://www.facweb.iitkgp.ernet.in/~agupta/netlab/Assgn1.pdf
http://www.facweb.iitkgp.ernet.in/~agupta/netlab/Assgn2.pdf
http://www.facweb.iitkgp.ernet.in/~agupta/netlab/Assgn3.pdf
http://www.facweb.iitkgp.ernet.in/~agupta/netlab/Assgn5.pdf
Напишите очень простой глупый веб-сервер, который будет принимать соединения на порту 80 и обслуживать обратные страницы.
Затем вы можете расширить его для поддержки загрузки других медиа (изображений и т. Д.).
Затем вы можете добавить некоторый (готовый) интерпретатор языка скриптов, который будет обрабатывать страницы на PHP, Perl и т. Д.
Вы многому научитесь в процессе.