我GCDAsyncUdpSocket
以前发消息udp
去发现ssdp
服务,在iOS
报“No route to host”这个错误,但是上面的模拟器没有问题,可以在服务中发现,是怎么回事?我搜索了很多信息,但没有发现可以帮助我。
1 回答
我遇到了同样的事情。当然,如果没有您的源代码,除了提供模糊的猜测外,我们无能为力。我希望你现在已经修复了它,如果你记得问题实际上是什么,请告诉我们。
要检查的事情:
主机上的防火墙设置。我试图在我的 mac book 上接收消息,发现防火墙设置可以阻止您选择的端口。防火墙位于第三个选项卡上的系统首选项下。
使用苹果的 Reachability 类来确保你有一个活跃的 WIFI/Cell 连接到互联网。(这里:https ://developer.apple.com/library/ios/samplecode/Reachability/Listings/Reachability_Reachability_h.html#//apple_ref/doc/uid/DTS40007324-Reachability_Reachability_h-DontLinkElementID_7 )
您还可以使用 Reachability 类中的其他函数来让您在打开套接字之前知道主机是否可以访问。
如果主机是你的 mac 并且模拟器在 mac 上,那么实际的网络流量并不多,然后当你在手机上运行时,你实际上是在使用真实的网络。请注意,根据您的网络情况,您可能需要主机的外部 IP 地址(相对于内部网络 WIFI 地址,例如 192.168.1.4 )
有些人报告了一个错误,即 UDP 停止工作并且您无法获得主机消息的路由,但由于某种原因打开和关闭飞行模式可以修复它。也许查看他们的解决方案(每 30 秒左右使用一次保持活动消息,以防止电源管理关闭单元连接)。这是一个示例:iOS 上的间歇性“无主机路由”,飞行模式关闭然后修复