支持多个客户端的Twisted服务器
我想用Python(twisted)写一个可以同时接收多个客户端的服务器。我对标准Python socket模块的socket编程已经挺熟悉了,但现在遇到麻烦了……
我觉得twisted真的很难入门,我看过一些关于它的教程。
但是我找不到一个简单的socket服务器示例,能够接受多个连接……有没有人能帮帮我?如果我在网上错过了什么重要的信息,请告诉我,因为我快抓狂了……
非常感谢任何帮助,
Andesay
4 个回答
2
这个教程是一个很好的(最好的)起点,适合从零开始学习如何编写扭曲服务器:http://twistedmatrix.com/documents/current/core/howto/tutorial/index.html
7
我觉得你可能没有理解twisted的核心概念。如果你创建一个twisted的socket服务器,它默认就能同时处理多个客户端的连接。我建议你按照以下顺序学习这些教程,然后再去看twisted的文档。可以写一些小代码片段,像这些教程里那样,帮助你理解实际发生了什么。
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)。祝你好运!