Сетевое программирование Linux. С чего я могу запустить? [закрытый]

8
задан Maksim Skurydzin 18 March 2010 в 15:52
поделиться

6 ответов

Я не уверен, насколько глубоко вы хотите начать свою карьеру сетевого программиста Linux, но если вы хотите просто начать работать с сокетами, вероятно, самые простые примеры - это сопряжение производитель/потребитель или сервер Echo. Другим хорошим источником может быть просмотр примеров/заданий из любого количества университетских/колледжских курсов по распределенным вычислениям.

Producer/Consumer

Это можно запустить в паре терминалов на вашем компьютере для тестирования. Создайте два приложения:

  • Программа Producer начинается с имени хоста и порта, принимает строку ввода от пользователя, соединяется с Consumer, посылает ему ввод, запрашивает другую строку ввода и завершается, когда достигает EOF (Ctrl-D).
  • Потребительская программа начинается с прослушивающего порта, ожидает соединения с Производителем, читает сообщение, отправленное Производителем, выводит это сообщение, закрывает соединение с Производителем, изящно завершает работу при отправке прерывания (Ctrl-C).

Echo Server

Идея аналогична Producer/Consumer.

  • Echo Server начинается с порта прослушивания, ожидает соединения, читает сообщение от Клиента, посылает это же сообщение обратно Клиенту и изящно завершает работу, когда ему посылается прерывание (Ctrl-C).
  • Echo Client запускается с именем хоста и портом, принимает строку ввода от пользователя, подключается к серверу, посылает ввод, читает ответ, сравнивает их, чтобы убедиться, что это было эхо, запрашивает еще одну строку ввода и завершает работу при достижении EOF.
5
ответ дан 5 December 2019 в 07:34
поделиться

Я бы начал с разработки простой многопользовательской игры, такой как крестики-нолики:

  • использовать ncurses (чтобы легко программировать свой графический интерфейс)
  • управлять лобби, в котором игроки могут присоединиться
  • управлять играми (начато игрок, который просит сыграть с другим)
  • управлять лестницей или рейтингом
  • управлять глобальным чатом для всех, кто присоединяется, и локальным чатом для людей, которые играют

конечно, я предложил крестики-нолики, но вы можете выбрать другую похожую игру (с простыми правилами). Важная часть состоит в том, чтобы заботиться о многих клиентах, которые также играют парами (для обработки пересылки данных и управления игрой) и отправки состояний (например, списка игр) игрокам.

В этом примере хорошо то, что у вас есть двухуровневый протокол:

  • первый уровень для обработки глобальных действий
  • второй уровень для обработки отдельной игры
5
ответ дан 5 December 2019 в 07:34
поделиться

Я могу порекомендовать использовать Wireshark - это поможет вам понять, как меняется сетевой трафик.

2
ответ дан 5 December 2019 в 07:34
поделиться

Книга, которую стоит прочитать, называется "Сетевое программирование Unix" Р. Стивенса: http://www.kohala.com/start/unpv12e.html

Проект, который нужно сделать, - это TCP-прокси или веб-прокси. Сделайте его однопоточным, но, конечно, обработайте несколько соединений. Вы сможете закончить его за неделю работы в свободное время.

1
ответ дан 5 December 2019 в 07:34
поделиться

Советую найти страницу любого лабораторного курса по компьютерным сетям и решить соответствующие задания. Там вы найдете подробное объяснение проблемы и задания будут в порядке возрастания сложности. Вы можете найти такие страницы, набрав в 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

http://www.facweb.iitkgp.ernet.in/~agupta/netlab/Assgn6.pdf

http://www.facweb.iitkgp.ernet.in/~agupta/netlab/Assgn7.pdf

3
ответ дан 5 December 2019 в 07:34
поделиться

Напишите очень простой глупый веб-сервер, который будет принимать соединения на порту 80 и обслуживать обратные страницы.

Затем вы можете расширить его для поддержки загрузки других медиа (изображений и т. Д.).

Затем вы можете добавить некоторый (готовый) интерпретатор языка скриптов, который будет обрабатывать страницы на PHP, Perl и т. Д.

Вы многому научитесь в процессе.

6
ответ дан 5 December 2019 в 07:34
поделиться