ios - 基本客户端/服务器示例代码适用于 iOS 模拟器,但不适用于设备

标签 ios debugging sockets networking client-server

我正在处理 Beej's socket tutorial .我使用示例代码创建了一个简单的服务器 iOS 应用程序和一个在我的桌面上运行的简单客户端。

当我在 iOS 模拟器上运行服务器时,一切正常。我从 OS X 终端向服务器发出请求并收到预期的 Hello, world! 响应:

$ g++ client.cpp
  ./a.out localhost
  client: connecting to 127.0.0.1
  client: received numbytes 13
  client: received 'Hello, world!'

然而,当我在设备上运行服务器应用程序时,我收到了一个奇怪的响应:

$ ./a.out 192.168.1.2
  client: connecting to 192.168.1.2
  client: received numbytes 0
  client: received ''

我修改了示例代码以将所有错误打印到控制台。不幸的是,我在模拟器或设备上运行时没有看到任何错误。

我是网络编程的新手。也许我的无线路由器正在阻止发送字节? 非常感谢任何调试提示。

我还尝试使用 telnet 与设备和模拟器对话:

$ telnet 192.168.1.2 3490
  Trying 192.168.1.2...
  Connected to 192.168.1.2.
  Escape character is '^]'.
  Connection closed by foreign host.

$ telnet localhost 3490
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
  Hello, world!Connection closed by foreign host.

看似相似的结果(在模拟器上运行返回预期的结果,而在设备上运行没有返回任何结果)。

最佳答案

打印发送的字节数有帮助。它强调了 send() 没有被调用的事实。注释 if (!fork()) { 检查会导致按预期发送和接收字节。现在了解上述检查的目的以及为什么它在模拟器和设备上返回不同的结果。

关于ios - 基本客户端/服务器示例代码适用于 iOS 模拟器,但不适用于设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817008/

相关文章:

ios - iOS 14 设备上的 ionic 服务。错误 "Invalid Service"

ios- 在 ios 6.1 中使用 aviary 自己的 View Controller 的超大问题

ios - UIWebView - 我应该期望什么加载时间?

ios - Google Drive API for iOS 应用说明和 redirect_uri_mismatch 错误消息

java - 调试Android SDK库

ios - 如何在 iOS 中调试 webkit 崩溃日志

c++ - 需要帮助调试 “attribute parser”! HackerRank的C++问题

Windows 上的 JavaScript HTA 开发。我可以使用套接字吗?

Java:地址已被使用

ios - CFSocket数据回调