【问题标题】:Mechanism of UDP communication between PC and iPhone?PC和iPhone之间的UDP通信机制?
【发布时间】:2016-05-14 22:06:05
【问题描述】:

我正在尝试创建一个测试应用程序来打开 PC 和 iPhone 之间的 UDP 连接。

据我所知

对于 UDP,两台 PC 可以通过彼此的 IP 地址和端口号相互通信。

这如何在 PC 和 iPhone 之间完成?

我知道 iPhone 和 PC 一样有自己的 ip 地址,但是要监听/发送的端口号呢?

【问题讨论】:

    标签: ios iphone sockets tcp udp


    【解决方案1】:

    iOS 具有与 macOS 相同的 BSD (POSIX)、CoreFoundation 和 Foundation 网络 API。就像两台 Mac 之间的通信一样。

    就像在任何计算机上一样,您可以在 iPhone 上打开任何高于 1024 的 UDP 端口(以下端口只能由系统进程打开,在 macOS 上相同),只要该端口尚未被其他端口使用进程,然后您会收到发送到此端口号的数据包。

    以下示例代码在 iPhone 上的运行与在 Mac 上的运行与在 Linux 或 BSD PC 上的运行相同:

    https://www.geeksforgeeks.org/udp-server-client-implementation-c/

    它不能在 Windows 上运行,因为 Microsoft 更喜欢始终以与世界其他地方不同且不兼容的方式来做所有事情。

    【讨论】:

      【解决方案2】:

      您可以使用 NSStream 来实现 UDP 套接字通信。

      使用此代码建立套接字连接:

      NSInputStream *inputStream;
      NSOutputStream *outputStream;
      
      - (void)initNetworkCommunication {
          CFReadStreamRef readStream;
          CFWriteStreamRef writeStream;
          CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", 80, &readStream, &writeStream);
          inputStream = (NSInputStream *)readStream;
          outputStream = (NSOutputStream *)writeStream;
      }
      

      本教程将帮助您: http://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-server

      【讨论】:

      • CFStreamCreatePairWithSocketToHost 用于 TCP,而不是 UDP
      【解决方案3】:

      您无法访问 iPhone 端口,因此如果您正在考虑在手机中运行某种服务,那就别管它了。这是来自网络单元的限制。

      【讨论】:

        猜你喜欢
        • 2016-11-19
        • 2010-09-25
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-13
        • 2013-02-19
        相关资源
        最近更新 更多