如果我像这样绑定我的udp套接字:
connectState = socket->bind(QHostAddress::Any, 14550);
然后我的理解是,如果使用UDP写出一些东西,我的LAN上有端口14550的所有设备都会触发readyRead信号。
我说错了吗?如果某个设备在prot 12345上,那么它不会触发readyRead信号? 是否可以仅绑定到特定的地址范围?
答案 0 :(得分:1)
我不确定,但我觉得你将AnyAddress与广播混为一谈
然后我的理解是我的局域网上的所有设备都带有端口14550 如果使用写入内容,将触发readyRead信号 UDP。
没有。当它在您可以到达的服务器的任何地址上发送UDP数据包时,它会触发readyRead。 UDP包必须发送到您的计算机。在这种情况下,::Any
表示任何接口,甚至虚拟127.0.0.1。
必须将UDP包发送到所选端口。
是否可以仅绑定到特定的地址范围?
据我所知。在我知道::Any
的所有操作系统中,转换为0.0.0.0,这是一个特殊地址,告诉操作系统"监听任何可用的接口"如果你想要排除一些,你必须以某种方式确定你感兴趣的IP列表,并构建一个QUdpSocket集合来收听。