我使用GCDAsyncUdpSocket
发送udp
邮件来发现ssdp
服务,iOS
报告“无主机路由”此错误,但是在上面的模拟器中没有问题可以在服务中找到,是怎么回事?我搜索了很多信息,但没有任何发现可以帮助我。
答案 0 :(得分:1)
我遇到了同样的事情。当然,如果没有您的源代码,除了提供模糊的猜测之外,我们无法帮助您。我希望你现在已经解决了这个问题,如果你还记得问题实际上是什么,请告诉我们。
要检查的事项:
主机上的防火墙设置。我试图在我的Mac书上接收消息,发现防火墙设置可以阻止您选择的端口。防火墙在第3个选项卡上处于系统首选项下。
使用apple 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秒左右,以防止电源管理关闭单元连接)。以下是一个示例:intermittent "No Route to Host" on iOS, flight mode off then on fixes