我们说我有以下代码。
server = TCPServer.new(3200)
client = server.accept()
如何找出客户端向我发送消息的端口号是什么?我已经尝试过client.peeraddr和client.addr,但它们都没有给我正确的端口号。
答案 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