通过套接字的 iOS 连接不起作用

标签 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];
}

那么这里有什么问题呢?有人可以帮帮我吗?

最佳答案

我的猜测是您正在尝试从不像您的模拟器那样在本地运行的设备连接到本地主机 (127.0.0.1)。如果你想让它在你的 iOS 设备上工作,你需要尝试连接到本地网络上服务器的实际 IP。只有当代码在运行服务器的同一台机器上运行时,当前地址才会工作,这就是为什么模拟器工作而你的设备不工作的原因。

关于通过套接字的 iOS 连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956962/

相关文章:

sockets - PhpStorm FTP 425无法建立数据连接: Cannot assign requested address

Java Socket程序从服务器读回

java - Android套接字编程?

java - 收集线程中的值并将其保存到 java 套接字数组中

ios - 将 float 值舍入到 .1(十位)

ios - 为什么我的应用程序在给予谷歌 API key 限制后总是未被授权?

javascript - 一段时间后,Node JS + Socket.io 应用程序停止接收事件

ios - 使用 UIGestureRecognizer 同时缩放、旋转和移动

ios - dequeueReusableCellWithIdentifier 导致空白表格单元格

iphone - 合并 CoreData 托管上下文时出现异常/崩溃