我阅读了有关 iOS 套接字编程的教程。 Networking Tutorial for iOS .如前所述,我使用 python 脚本启动了服务器。我通过 telnet 连接了一些客户端,一切正常。然后我写了代码或 iOS 应用程序,但有问题。当我在模拟器中运行该应用程序时,它运行良好,但在我的设备上,没有任何效果。
我有以下 iOS 代码
- (void)initNetworkCommunication
{
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)(@"127.0.0.1"), 80, &readStream, &writeStream);
inputStream = (__bridge_transfer NSInputStream *)readStream;
outputStream = (__bridge_transfer NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
}
那么这里有什么问题呢?有人可以帮帮我吗?
最佳答案
我的猜测是您正在尝试从不像您的模拟器那样在本地运行的设备连接到本地主机 (127.0.0.1)。如果你想让它在你的 iOS 设备上工作,你需要尝试连接到本地网络上服务器的实际 IP。只有当代码在运行服务器的同一台机器上运行时,当前地址才会工作,这就是为什么模拟器工作而你的设备不工作的原因。
关于通过套接字的 iOS 连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956962/