当通过 dgram.createSocket('udp4');
设置套接字并且不将其绑定(bind)到特定端口时,我确实收到了发送到 255.255.255.255 的广播数据包
但是当我将同一个套接字绑定(bind)到我的接口(interface)的特定 IP 时 this.server.bind(67, host);
我将不会收到这些广播数据包。这是正常行为吗?
最佳答案
Javadoc for java.net.DatagramSocket说:
In order to receive broadcast packets a DatagramSocket should be bound to the wildcard address. In some implementations, broadcast packets may also be received when a DatagramSocket is bound to a more specific address.
这非常清楚地表明该行为是平台相关的,因此 Javascript 套接字会以同样的方式受到影响。
根据我的测试,Windows Vista 64 的行为与第二句中描述的不同(即不接收广播,除非绑定(bind)到 INADDR_ANY)。
关于javascript - 监听特定端口时接收广播包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270606/