Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:异步tcp socketserver_Python_Python 2.7_Networking_Asynchronous - Fatal编程技术网

Python:异步tcp socketserver

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实现的 如果要创建服务器而不指定端口,则可以使用任意端口:操作系统将分配一个可用端口 当然,还必须有一种方法来指定要绑定到

我希望尝试用python中的socketserver处理异步请求。最底层有一个例子,但没有意义。它表示您使用端口0,该端口分配任意未使用的端口。但是,如果客户端不在同一个程序中,您如何知道使用哪个端口呢?我不太明白如何使它有用。

一旦
绑定完成,您需要检索分配给
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()调用分配。它不是零。稍后,您将该
端口
值传递给使用它的客户机