2009-11-19 198 views

回答

9

由于客户端使用与服务器相同的脚本实现,所以端口是已知的。在真实情况下,您应该为守护程序指定一个端口。除了让客户知道连接哪个端口之外,您可能还需要知道,以便您可以在客户端和服务器之间打开防火墙。

2

一旦bind完成,您需要检索分配给socketserver的端口:在这种情况下,这可能会通过ip, port = server.server_address

任意端口就是如果你想创建一个没有指定端口的服务器:操作系统将分配一个可用的端口。

当然,还必须有一种方法来指定绑定到哪个端口。

5

在您链接的例子,他们获取的端口:

# 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看,如果你是认真的写异步处理:)

+0

+1。扭曲是要走的路。 – 2009-11-19 17:27:54

0
server = ThreadedTCPServer((HOST, 0), ThreadedTCPRequestHandler) 
ip, port = server.server_address 

... 

client(ip, port, "Hello World 1") 

端口值0说:“我不关心它是什么端口号”,所以SERVER_ADDRESS的port值由ThreadedTCPServer()调用分配。它不是零。稍后,您将该值传递给使用该值的客户端。