1

假设我有以下代码。

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

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

4

2 回答 2

1

客户端连接的端口是 3200。客户端上创建连接的端口对于每个连接都是随机的,由操作系统从未使用的端口提供。

于 2012-04-23T10:58:10.080 回答
1

client.peeraddr给你一个对应于 a 的数组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 回答