私は次のコードを持っているとしましょう。TCP接続のポート番号を調べる方法
server = TCPServer.new(3200)
client = server.accept()
クライアントが自分のメッセージを送信したポート番号はどのようになっていますか?私はclient.peeraddrとclient.addrの両方を試していて、どちらも私に適切なポート番号を与えていません。
私は次のコードを持っているとしましょう。TCP接続のポート番号を調べる方法
server = TCPServer.new(3200)
client = server.accept()
クライアントが自分のメッセージを送信したポート番号はどのようになっていますか?私はclient.peeraddrとclient.addrの両方を試していて、どちらも私に適切なポート番号を与えていません。
クライアントが接続しているポートは3200です。接続が作成されるクライアント側のポートは、使用されていないポートからOSによって指定される接続ごとにランダムです。
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