Правильный способ кодирования сервера Python - PullRequest
3 голосов
/ 15 июля 2011

Какой способ лучше?

Создание цикла while с последующим использованием модуля select ИЛИ использование ThreadedTCPServer с пользовательским классом.

У меня проблемы с многопоточным TCP-сервером, хотя это можетпросто будь моей кодировкой.

Ответы [ 2 ]

5 голосов
/ 15 июля 2011

Моя личная рекомендация - использовать Twisted .Это основанная на Python инфраструктура, предназначенная, прежде всего, для написания событийного сетевого программного обеспечения.В документации есть много замечательных примеров того, как создавать различные типы серверов и клиентов.

1 голос
/ 15 июля 2011

Я уверен, что не существует такого понятия, как «правильный» путь.

Если вы не хотите, не должны или не можете использовать любую из существующих реализаций сервера, общая идея (в псевдокоде):

ss = serversocket()
ss.bind ()
while (True):
  cs = ss.accept ()
  spawnCommThread (cs)

В CommThread для каждого клиента вы позаботитесь о том, чтобы прочитать данные из сокета, возвращенного методом accept, связаться с вашим клиентом и умереть, когда клиент закрывает соединение или задан другой критерий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...