Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone本机系统例程(数据报套接字类型)_Iphone_Ios_Sockets_Ios4_Streaming - Fatal编程技术网

iPhone本机系统例程(数据报套接字类型)

iPhone本机系统例程(数据报套接字类型),iphone,ios,sockets,ios4,streaming,Iphone,Ios,Sockets,Ios4,Streaming,套接字是全双工通信 进程之间的通道 本地到同一主机或 其中一个进程位于远程主机上。 与管道不同,数据进入管道 只有一个方向,插座允许 处理发送和接收 数据。NSFileHandle有助于 流式套接字上的通信 通过提供运行机制 接受套接字的后台线程 连接和从套接字读取 NSFileHandle当前仅处理 流式通信 插座。如果你想使用数据报 或其他类型的套接字,您必须 使用创建和管理连接 本机系统例程。 进程的一端 通信通道(服务器) 从创建和准备 套接字使用系统例程。这些 BSD和BSD之间的例程

套接字是全双工通信 进程之间的通道 本地到同一主机或 其中一个进程位于远程主机上。 与管道不同,数据进入管道 只有一个方向,插座允许 处理发送和接收 数据。NSFileHandle有助于 流式套接字上的通信 通过提供运行机制 接受套接字的后台线程 连接和从套接字读取

NSFileHandle当前仅处理 流式通信 插座。如果你想使用数据报 或其他类型的套接字,您必须 使用创建和管理连接 本机系统例程。

进程的一端 通信通道(服务器) 从创建和准备 套接字使用系统例程。这些 BSD和BSD之间的例程略有不同 非BSD系统,但包括 相同的步骤顺序:

  • 创建的流类型套接字 某些协议

  • 将名称绑定到套接字

  • 以观察者的身份加入 NSFileHandleConnectionAcceptedNotification

  • 正在发送acceptConnectionInBackgroundAndNotify 此文件句柄对象

    此方法接受中的连接 后台,创建新的NSFileHandle 新套接字描述符中的对象, 并发布NSFileHandleConnectionAcceptedNotification

  • 现在我看到迈克尔回答。


    您有本机系统例程(数据报套接字类型)的iPhone实现示例吗?

    好的,首先我找到了我需要的东西,使用CFSocket API可以实现UDP同步

    CFSocket API

    套接字是网络通信的最基本层次。插座的作用方式与电话插孔类似。它允许您连接到另一个套接字(本地或通过网络)并向该套接字发送数据

    最常见的套接字抽象是BSD套接字。CFSocket是BSD套接字的抽象。CFSocket以很少的开销提供了BSD套接字的几乎所有功能,并且它将套接字集成到一个运行循环中。CFSocket不限于基于流的套接字(例如TCP),它可以处理任何类型的套接字

    您可以使用CFSocketCreate函数从头开始创建CFSocket对象,或者使用CFSocketCreateWithNative函数从BSD套接字创建CFSocket对象。然后,可以使用函数CFSocketCreateRunLoopSource创建运行循环源,并使用函数CFRunLoopAddSource将其添加到运行循环中。这将允许CFSocket对象在收到消息时运行CFSocket回调函数

    不管怎样,我找到了AsyncSocket API

    CocoaAsyncSocket支持TCP和UDP。AsyncSocket类用于TCP,AsyncUdpSocket类用于UDP。下面对每个类进行描述

    AsyncSocket是一个TCP/IP套接字网络库,它封装了CFSocket和CFStream。它提供了异步操作和一个本机cocoa类,并提供了委托支持。以下是主要功能:

    排队非阻塞读写,可选超时。你告诉它读什么或写什么,它会在完成后给你打电话。 自动插座验收。如果您告诉它接受连接,它将为每个连接调用其自身的新实例。当然,您可以立即断开它们的连接。 代表支持。错误、连接、接受、读取完成、写入完成、进度和断开连接都会导致调用委托方法。 运行基于循环的,而不是基于线程的。尽管您可以在主线程或工作线程上使用它,但您不必这样做。它使用nsrunlop异步调用委托方法。委托方法包括一个套接字参数,允许您区分多个实例。 独立于一个类。你不需要到处乱搞流或插座。该类处理所有这些。 支持IPv4和IPv6上的TCP流。 图书馆是公共领域,最初由达斯汀·沃斯撰写。现在可以在公共场合使用,以允许并鼓励其继续支持

    AsyncUdpSocket是一个包装CFSocket的UDP/IP套接字网络库。它的工作原理几乎与TCP版本完全相同,但专门为UDP设计。这包括排队的非阻塞发送/接收操作、完全委托支持、基于运行循环的自包含类,以及对IPv4和IPv6的支持

    这里是CFSocket参考


    链接的问题是关于流与数据报套接字的问题。在这种情况下,“本机系统例程”实际上是什么?