如何找出TCP连接的端口号

时间:2012-04-23 09:24:51

标签: ruby

我们说我有以下代码。

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

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

2 个答案:

答案 0 :(得分:1)

客户端连接的端口是3200.在客户端创建连接的端口对于每个连接是随机的,由OS从未使用的端口给出。

答案 1 :(得分: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
相关问题