1
假设我有以下一段代码。如何找出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