1

次のコードがあるとします。

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

クライアントがメッセージを送信したポート番号を確認するにはどうすればよいですか? client.peeraddr と client.addr の両方を試しましたが、どちらも適切なポート番号を教えてくれません。

4

2 に答える 2

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
于 2012-04-23T14:22:40.647 に答える
1

クライアントが接続しているポートは3200です。また、接続が作成されるクライアント側のポートは、未使用のポートからOSによって指定された、接続ごとにランダムです。

于 2012-04-23T10:58:10.080 に答える