在iPhone上,我创建了一个UDP套接字并将其绑定到WLAN接口。我启用了SO_BROADCAST
并且能够将广播数据包发送到网络(由笔记本上运行的客户端确认)。但是iPhone上的UDP套接字无法接收广播数据包。
在我看来,这是一个内核错误,因为不允许启用了SO_BROADCAST
的套接字接收任何广播数据包,这是一个糟糕的设计决策。
和此处进一步描述了该问题。此问题最流行的解决方案是 绑定到INADDR_ANY
.但是,如果能够将UDP套接字绑定到一个接口,同时仍能接收广播数据包,那就太好了!真的没有办法做到这一点吗?
(当我在 C 类网络 (/24) 上将套接字绑定到 192.168.1.7 时,它应该接受发送到 192.168.1.7 的数据包和发送到 192.168.1.255 的数据包!
谢谢!
请检查下面的链接可能会有所帮助。
接收 udp 广播数据包 ios
iPhone UDP 广播和响应
iOS UDP 广播与.PHP UDP 广播
https://github.com/robbiehanson/CocoaAsyncSocket