我想编写一个可以接受python(twisted)中的多个客户端的服务器。我已经非常熟悉使用标准python套接字模块的套接字编程,但是这里遇到了麻烦.. 我认为扭曲很难进入,我已经阅读了一些有关它的教程。 但我真的找不到的是一个接受多个连接的简单套接字服务器..任何人都可以帮忙吗?如果我在网上错过了一些有价值的信息,请告诉我,因为我正在拔头发..
非常感谢任何帮助,
Andesay
答案 0 :(得分:12)
说,您想运行服务器接受端口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)。祝你好运!
答案 1 :(得分:7)
我想,你没有得到扭曲的本质。如果您创建一个扭曲的套接字服务器,它默认可通过多个客户端连接。我会按顺序建议以下教程,然后阅读扭曲的文档。编写这些教程中给出的小片段,以了解实际发生的情况。
答案 2 :(得分:2)
本教程是学习如何从头开始编写扭曲服务器的一个很好的(最好的)起点: http://twistedmatrix.com/documents/current/core/howto/tutorial/index.html
答案 3 :(得分:0)
Twisted是一个很棒的框架,但是这个(经常)意味着,对于简单的事情来说,这可能是一个非常难的......
这是事实。如果需要,您需要编写一个实现Resource的类,一个LineReceiver,然后将它附加到反应器中:
reactor.connectTCP(<HOST>, <PORT>, istance_of_your_class)