TCP IP-сервер, который может обрабатывать несколько запросов? - PullRequest
1 голос
/ 31 марта 2011

Я изучаю TCP / IP и пытаюсь использовать его для выполнения различных команд на моем сервере.

Я думал, что начну с малого и нарасту. У меня запущен текущий пример с подключением сервера и клиента, а затем сервер отправляет текущее время клиенту.

Теперь я хочу сделать так, чтобы сервер мог обрабатывать несколько клиентов.

Как я могу это сделать? Я думаю, что мог бы использовать fork, но есть ли способ сделать это, не беспокоясь о нескольких процессах?

Есть ли какие-нибудь хорошие учебники по этому виду вещей, или могли бы вы дать некоторые инструкции о том, как изменить мой существующий код?

Спасибо

Ответы [ 3 ]

3 голосов
/ 31 марта 2011

glibc Manual имеет хороший пример. Недостающие биты кода можно найти ранее в этой главе. Хорошая вещь в этом примере заключается в том, что вам не нужно несколько потоков

1 голос
/ 31 марта 2011

Я бы порекомендовал использовать потоки:

  • Один серверный поток имеет единственную цель прослушивания на сокете сервера для входящих соединений.Как только соединение получено, оно передается рабочему потоку, а сервер продолжает прослушивать.
  • Один или несколько рабочих потоков.Эти темы сделают большую часть работы.Вы можете использовать один поток на сокет, или вы можете использовать функцию select, чтобы один поток мог обрабатывать несколько сокетов.извините.
0 голосов
/ 31 марта 2011

Посмотрите на ответ Эрика на этот другой вопрос .Вам действительно не нужно выполнять многопоточность.

...