我正在尝试编写一个简单的 UDP 心跳来广播到整个子网中给定端口上的所有侦听节点。
我在创建/绑定客户端 DatagramSocket 时遇到问题。我正在尝试这样的代码:
// My IP is 192.168.201.57, so I'm using 192.168.201.255 for broadcast. Right?
val socket = new DatagramSocket(9099, InetAddress.getByName("192.168.201.255"))
这产生了一个异常:java.net.BindException:无法分配请求的地址。
我也试过 255.255.255.255 得到相同的结果。还根据我在另一篇文章中读到的内容尝试了类似的方法:
val socket = new DatagramSocket(null)
socket.bind( new InetSocketAddress(broadcastIp, port) ) // where I tried several broadcastIp values
这也给出了同样的例外。我还应该补充一点,我已经尝试了不同的端口值,并确保机器上没有其他任何东西正在使用我正在尝试的端口。