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

时间:2014-01-14 11:09:44

标签: ios sockets udp broadcast

在iPhone上我创建了一个UDP套接字并将其绑定到WLAN接口。我启用SO_BROADCAST并且我能够向网络发送广播数据包(由我的笔记本上运行的客户端确认。)但是iPhone上的UDP套接字无法接收广播数据包。

在我看来,这是一个内核错误,因为不允许启用SO_BROADCAST的套接字来接收任何广播数据包,这是一个糟糕的设计决定。

问题进一步说明herehere。此问题最常用的解决方案是绑定到INADDR_ANY。但是,能够在仍然接收广播数据包的同时将UDP套接字绑定到一个接口是很好的!真的没有办法实现这个目标吗?

(当我在C类网络(/ 24)上将套接字绑定到192.168.1.7时,它应该接受发送到192.168.1.7的数据包和发送到192.168.1.255的数据包!)

谢谢!