Python:异步tcp socketserver
我希望尝试用python中的socketserver处理异步请求。最底层有一个例子,但没有意义。它表示您使用端口0,该端口分配任意未使用的端口。但是,如果客户端不在同一个程序中,您如何知道使用哪个端口呢?我不太明白如何使它有用。一旦Python:异步tcp socketserver,python,python-2.7,networking,asynchronous,Python,Python 2.7,Networking,Asynchronous,我希望尝试用python中的socketserver处理异步请求。最底层有一个例子,但没有意义。它表示您使用端口0,该端口分配任意未使用的端口。但是,如果客户端不在同一个程序中,您如何知道使用哪个端口呢?我不太明白如何使它有用。一旦绑定完成,您需要检索分配给socketserver的端口:在这种情况下,这可能是通过ip,port=server.server\u address实现的 如果要创建服务器而不指定端口,则可以使用任意端口:操作系统将分配一个可用端口 当然,还必须有一种方法来指定要绑定到
绑定完成,您需要检索分配给socketserver
的端口:在这种情况下,这可能是通过ip,port=server.server\u address
实现的
如果要创建服务器而不指定端口,则可以使用任意端口:操作系统将分配一个可用端口
当然,还必须有一种方法来指定要绑定到哪个端口。在您链接的示例中,他们正在获取端口:
# 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:)由于客户端与服务器使用相同的脚本实现,因此端口是已知的。在实际场景中,应该为守护进程指定一个端口。除了让您的客户端知道要连接哪个端口之外,您可能还需要知道,以便可以打开客户端和服务器之间的防火墙
server = ThreadedTCPServer((HOST, 0), ThreadedTCPRequestHandler)
ip, port = server.server_address
...
client(ip, port, "Hello World 1")
端口值0表示“我不在乎它是什么端口号”,因此服务器地址的端口
值由threadedtcserver()调用分配。它不是零。稍后,您将该端口
值传递给使用它的客户机