【发布时间】:2012-02-03 10:42:46
【问题描述】:
如果我像这样发送一个包含 'foo' 的 UDP 数据包:
socket = UDPSocket.new
socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
socket.send('foo', 0, '<broadcast>', 40001)
然后wireshark告诉我数据包被正确发送,但不幸的是它的源地址是192.168.0.3。由于我的服务器正在监听 localhost:40001,这意味着它没有收到数据包。我不想让服务器监听 0.0.0.0,因为它不应该接收在另一个网络中发送的类似 UDP 请求。我可以让服务器在 192.168.0.0/24 网络中进行监听,但稍后它会从另一个网络进行监听,即既不是 localhost 也不是 192.168.0.0/24,所以这并不能解决问题。
有没有办法选择客户端套接字发送数据包的源地址(和接口)?
【问题讨论】:
标签: ruby sockets networking udp