2012-04-23 36 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