的Python:异步TCP的SocketServer
-
21-09-2019 - |
题
我在寻找 http://docs.python.org/library/socketserver.html 尝试和处理与蟒蛇SocketServer的异步请求。在最底层有一个例子,但它没有任何意义。它说,使用端口0,指定任意未使用的端口。但你怎么知道他们是不是在同一个程序中使用什么端口,用于客户端?我不太明白如何使这项有用的。
解决方案
由于客户端在相同的脚本作为服务器中实现,则端口是已知的。在真实的场景中,你应该指定你的后台程序的端口。除了让你的客户知道在哪个端口进行连接,您可能还需要知道,这样你可以在你的客户端和服务器之间打开防火墙。
其他提示
在这个例子中你联系在一起,它们被取出的端口:
# Port 0 means to select an arbitrary unused port
HOST, PORT = "localhost", 0
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address
不过,你真的应该在www.twistedmatrix.com看,如果你是认真的写异步处理:)
您需要检索,一旦socketserver
完成已分配给bind
端口:在这种情况下,这将可能是通过ip, port = server.server_address
在任意端口就是,如果你想在不指定端口来创建一个服务器:操作系统将分配可用的端口
当然还必须有一种方法来指定要绑定到的端口。
server = ThreadedTCPServer((HOST, 0), ThreadedTCPRequestHandler)
ip, port = server.server_address
...
client(ip, port, "Hello World 1")
端口值0说:“我不关心它是什么端口号”,所以SERVER_ADDRESS的port
值由ThreadedTCPServer()调用分配。它不是零。后来,你port
值传递给客户,谁使用它。
不隶属于 StackOverflow