我写这个Ruby程序发送一个UDP数据包到端口16800:为什么我没有收到发送到我自己的IP的UDP包?
require 'socket'
sock = UDPSocket.new
sock.bind("", 47123)
sock.send("Hello!", 0, "192.168.0.100", 16800)
sock.close
其中192.168.0.100是我自己的IP地址。但是,数据包不会显示在Wireshark中,我的UDP服务器在同一台PC(运行Linux)上侦听端口16800时没有收到任何内容。
当我稍微程序改写为
require 'socket'
sock = UDPSocket.new
sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
sock.bind("", 47123)
sock.send("Hello!", 0, "<broadcast>", 16800)
sock.close
了数据包在Wireshark的显示出来,但我的服务器仍然没有收到任何东西。
我错过了一些明显的东西吗?
编辑: 服务器代码,完整性
require 'socket'
sock = UDPSocket.new
sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
sock.bind(nil, 16800)
while true
packet = sock.recvfrom(1024)
puts packet
end
然而,这地方从互联网上,并在编辑它计算器复制,我发现服务器总是收到发往127.0包。 0.1但是当我改变为“”时,服务器突然也收到上面发送的数据包。这是在ruby套接字实现中的错误吗?
尝试127.0.0.1? – 2009-08-25 12:15:16