2012-04-23 37 views
1

假设我有以下一段代码。如何找出TCP连接的端口号

server = TCPServer.new(3200) 
client = server.accept() 

如何找出客户端向我发送消息的端口号是?我已经尝试了client.peeraddr和client.addr,并且他们都没有给我正确的端口号。

回答

1

客户端连接到的端口是3200.并且,连接创建的客户端端口对于每个连接都是随机的,由OS从未使用的端口给出。

1

client.peeraddr为您提供了一个对应于struct addrinfo的数组。对于AF_INET,它看起来是这样的:

["AF_INET", 48942, "127.0.0.1", "127.0.0.1"] 

您可以从它像这样创建一个Addrinfo对象并获取端口:

require 'socket' 
server = TCPServer.new(3200) 
client = server.accept() 
addr = Addrinfo.new(client.peeraddr) 
port = addr.ip_port