我使用GCDAsyncSocket(7.5.0)进行了非常简单的TCP客户端/服务器实现,并且我使用NSNetService
进行服务发现。
它仅在本地wifi网络上使用,它可以工作2年没有问题(只是说:我正确使用GCDAsyncSocket)。
...直到我尝试使用第三个iOS设备作为提供客户端和服务器连接的wifi网络的接入点。
同样,当第三个iOS设备通过蓝牙共享其连接来连接客户端和服务器时。
服务发现没问题,但是一旦我获得了IP地址和端口,我就无法连接并收到此错误:
Error Domain=NSPOSIXErrorDomain Code=64 "Host is down" UserInfo={NSLocalizedDescription=Host is down, NSLocalizedFailureReason=Error in connect() function}
我尝试限制IPv4和IPv6(两者都是由服务发现提供),我也尝试使用GCDAsyncSocket存储库的ipv6 git分支和各种参数。
我的主要问题是:是否可以通过wifi或蓝牙iOS接入点建立简单的TCP连接,如果是这样的话?
我的第二个问题是:为什么NSNetService
服务发现工作而不是简单的TCP连接?我知道这些协议不具有可比性,但仍然让我感到困惑。
答案 0 :(得分:1)
听起来对我而言,你的问题在于与蜂窝网络的联系。连接到蜂窝网络时,会导致IP地址出现问题。请参阅Cocoaasyncsocket Github page中的讨论。