如何在特定接口上接收 UDP 广播数据包



在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

最新更新