在侦听特定端口时接收广播的数据包
Receiving broadcasted packets when listening to a specific port
当通过dgram.createSocket('udp4');
设置套接字而不将其绑定到特定端口时,我确实会接收发送到255.255.255.255的广播数据包但是,当我将同一个套接字绑定到接口this.server.bind(67, host);
的特定IP时,我将不会接收到这些广播的数据包。这是正常行为吗?
java.net.DatagramSocket的Javadoc说:
为了接收广播数据包,应绑定DatagramSocket到通配符地址。在一些实现中,广播数据包当DatagramSocket绑定到更特定的住址
这非常清楚地表明,这种行为依赖于平台,因此Javascript套接字也会受到同样的影响。
根据我的测试,Windows Vista 64的行为与第二句所述不同(即,除非绑定到INADDR_ANY,否则不会接收广播)。
是的,这是预期的行为,因为如果没有端口或接口,dgram.createSocket()将:
绑定到";所有接口";地址(它对udp4和udp6套接字都做了正确的事情)。
--来自nodejs.org 上的dgram API文档
它允许您捕获到任何可用接口上的任何端口的广播数据包。
证明createSocket()的接口和端口将限制您仅捕获已广播到网络的数据包,这些数据包绑定到指定端口上的指定接口。
您应该注意,要接收到特定接口的广播,需要将其发送到该接口所服务的网络上/的广播地址。
因此,如果你的网络是:
10.1.1.0
网络掩码为:
255.255.255.252
也就是:
10.1.1.0/29 (CIDR notation)
正确的广播地址是:
10.1.1.7
考虑到你的网络地址和网络掩码,tuxgraphics.org的";网络和IP地址计算器";是一个工具,您可以使用它来确定特定网络的正确广播地址。
- 在侦听特定端口时接收广播的数据包
- Modx数据包管理器ext-all.js错误
- 从Node.js UDP发送大量小数据包;Don’不要全部寄出去
- WebRTC是否为您处理数据包丢失和数据包接收确认等,或者您是否需要为此编写自己的解决方案
- 如果在节点 JS 中落后于 Socket.IO,则丢弃数据包
- Socket.io 数据包在断开连接和重新连接之间丢失
- 如何在流星应用程序上广播数据
- 节点.JS Socket.IO 将数据包发送到特定连接 ID
- 将一个q promise数组拆分为多个数据包,并依次运行这些数据包
- 如何通过本地大于1500字节的UDP数据包发送浮点值并对其进行解析
- Javascript CORS被阻止,但仍在数据包捕获中显示数据
- 套接字IO节点,用于向所有客户端广播数据
- JavaScript:调用已启动类(数据包处理程序)的变量函数
- 如何在EDGE.js(nodeJS.NET数据包)中重用代码
- Windows RT应用程序未接收UDP数据报数据包.微软DatagramSample中我的nor中的以太币
- 您应该在socket.io中手动批处理可扩展应用程序的数据包吗
- BLE iOS Nativescript:广播数据失败
- 套接字.IO初始数据包
- 发送一个大数据包或许多小数据包为白板应用程序
- 基于不可能作弊的优化数据包验证