2012-04-23 8 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 
関連する問題