通过套接字的iOS连接无法正常工作

时间:2014-05-30 14:26:15

标签: ios sockets

我重新介绍了关于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];
}

那么这里有什么问题?请有人帮帮我吗?

1 个答案:

答案 0 :(得分:2)

我的猜测是你试图从一个没有像你的模拟器一样在本地运行的设备连接到localhost(127.0.0.1)。如果您希望从iOS设备上运行,则需要尝试连接到本地网络上服务器的实际IP。当前地址仅在代码在运行服务器的同一台机器上运行时才有效,因此模拟器工作的原因和您的设备没有。