收听特定端口时接收广播的数据包

sou*_*ver 6 javascript networking udp broadcast node.js

当设置套接字dgram.createSocket('udp4');并且不将其绑定到特定端口时,我会接收发送到255.255.255.255的广播数据包但是当我将相同的套接字绑定到我的接口的特定IP时,我this.server.bind(67, host);将不会收到这些广播的数据包.这是正常行为吗?

use*_*421 4

java.net.DatagramSocket 的 Javadoc说:

为了接收广播数据包,DatagramSocket 应该绑定到通配符地址。在一些实现中,当DatagramSocket绑定到更具体的地址时,也可以接收广播分组。

这非常清楚地表明该行为是依赖于平台的,因此 Javascript 套接字也会受到同样的影响。

根据我的测试,Windows Vista 64 的行为并不如第二句中所述(即除非绑定到 INADDR_ANY,否则不会接收广播)。

  • @RobRaisch 也祝你快乐-1。如果您正确阅读了我的答案,您会发现我引用了 Javadoc *作为行为依赖于平台的证据,*因此它也会影响 Javascript,实际上同样影响所有其他语言。可惜你第一次没有得到它。 (2认同)