Скрученный сервер для нескольких клиентов
Я хочу написать сервер, который может принимать несколько клиентов в python (twisted). Я уже хорошо знаком с программированием сокетов с помощью стандартного модуля сокетов python, но здесь возникает проблема.
Я думаю, что скрученный действительно трудно попасть, и я прочитал некоторые уроки об этом.
Но вещь, которую я действительно не могу найти, - это простой сервер сокетов, который принимает несколько соединений. Может ли кто-нибудь помочь? Если я пропустил какую-то ценную информацию в Интернете, пожалуйста, дайте мне знать, потому что я вытягиваю свои волосы.
Любая помощь очень ценится,
Andesay
Ответы
Ответ 1
Скажем, вы хотите запустить сервер, принимающий клиентские соединения на порте 9000:
from twisted.internet import reactor, protocol
PORT = 9000
class MyServer(protocol.Protocol):
pass
class MyServerFactory(protocol.Factory):
protocol = MyServer
factory = MyServerFactory()
reactor.listenTCP(PORT, factory)
reactor.run()
И если вы хотите протестировать подключение к этому серверу, вот код для клиента (для запуска в другом терминале):
from twisted.internet import reactor, protocol
HOST = 'localhost'
PORT = 9000
class MyClient(protocol.Protocol):
def connectionMade(self):
print "connected!"
class MyClientFactory(protocol.ClientFactory):
protocol = MyClient
factory = MyClientFactory()
reactor.connectTCP(HOST, PORT, factory)
reactor.run()
Вы заметите, что код очень похож, только мы используем Factory для сервера и ClientFactory для клиента, а серверы должны прослушивать (listenTCP), пока клиент должен подключиться (connectTCP). Удачи!
Ответ 2
Я думаю, вы не поняли суть искривленного. Если вы создаете сервер скрученных сокетов, он по умолчанию доступен через несколько клиентов. Я бы предложил следующие учебные пособия, а затем прочитать скрученную документацию. Напишите небольшие фрагменты, как указано в этих уроках, чтобы понять, что на самом деле происходит.
Ответ 3
Этот учебник - отличная (лучшая) отправная точка, чтобы узнать, как писать скрученный сервер с нуля:
http://twistedmatrix.com/documents/current/core/howto/tutorial/index.html
Ответ 4
Twisted - потрясающая структура, но это (как часто) подразумевает, что для легкой вещи это может быть довольно сложно...
Вот этот факт. Вам нужно написать класс, который в случае необходимости использует Resource, LineReceiver, а затем присоединить его к реактору с помощью
reactor.connectTCP(<HOST>, <PORT>, istance_of_your_class)