假设我有以下代码。
server = TCPServer.new(3200)
client = server.accept()
如何找出客户端向我发送消息的端口号是什么?我已经尝试过 client.peeraddr 和 client.addr 并且它们都没有给我正确的端口号。
假设我有以下代码。
server = TCPServer.new(3200)
client = server.accept()
如何找出客户端向我发送消息的端口号是什么?我已经尝试过 client.peeraddr 和 client.addr 并且它们都没有给我正确的端口号。
客户端连接的端口是 3200。客户端上创建连接的端口对于每个连接都是随机的,由操作系统从未使用的端口提供。
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