我在寻找 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值传递给客户,谁使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top