MeshPipe 0.1.3

MeshPipe 0.1.3

测试已测试
语言语言 Obj-CObjective C
许可 BSD
发布最后发布2016年2月

Nevyn BengtssonNevyn Bengtsson 维护。



MeshPipe 0.1.3

  • 作者
  • Nevyn Bengtsson

作者 Nevyn Bengtsson,2015-08-09

MeshPipe 是一个 iOS 的 IPC(进程间通信) 库,使用 UDP 网络通信。它允许单个 iOS 设备上运行的多达多个应用程序相互发送任意数据。它

  • 自动连接到配置了相同端口的 MeshPipe 应用程序
  • 检测其他应用程序断开连接或消失,提供一个可用的对等方列表

由于它是基于 UDP 的,因此有一些固有的限制

  • 消息必须在单个 UDP 数据报中。当前 iOS 的 UDP 数据报最大大小为 9216 字节。
  • 无法保证交付。消息可能无法通过,可能来自看似不可用的对等方,或者顺序错误。
  • 您可能收到恶意或意外数据,因为手机上的任何应用程序都可以构造一个消息并发送给您的应用程序。
  • 通讯是不安全的,设备上的任何应用程序都可能监听甚至更改消息。

使用

首先,选择一个端口和参与应用程序的最大数量。

每个应用程序将尝试连接到 count 个其他应用程序,所以不要将此数值设得太大,因为它将创建大量 UDP 套接字。

尝试选择一个端口和范围,该端口和范围不会与其他应用程序对 UDP 或 MeshPipe 的使用冲突。也许我们可以在维基百科上为此项目协调使用?

每个应用程序还可以通过名称来识别自己。我建议使用 "(appBundleName).(nameOfLibrary)"。

_pipe = [[MeshPipe alloc] initWithBasePort:12568 count:8 peerName:name delegate:self];

当其他对等方连接时,您可以这样与他们交谈

[peer sendData:[@"Hello" dataUsingEncoding:NSUTF8StringEncoding]];

实现委托方法以接收数据

- (void)meshPipe:(MeshPipe*)pipe receivedData:(NSData*)data fromPeer:(MeshPipePeer*)peer

您可以通过枚举连接的对等方,向所有对等方(即所有其他已连接的应用程序)广播

for(MeshPipePeer *peer in pipe.peers)
    [peer sendData:[@"Hello" dataUsingEncoding:NSUTF8StringEncoding]];

您可以对 peers 进行 KVO,或者如果您愿意,实现委托方法以在对等方连接/消失时进行回调

- (void)meshPipe:(MeshPipe*)pipe acceptedNewPeer:(MeshPipePeer*)peer
- (void)meshPipe:(MeshPipe *)pipe lostPeer:(MeshPipePeer*)peer withError:(NSError*)error

请注意,断开连接时,错误位于 `MeshPipeErrorDomain` 域中,并在 MeshPipe.h 的底部列出。

Cerfing 的使用

如果您想要在 MeshPipe 网络中传输更多有趣类型的数据,可以使用 Cerfing 和附加的 CerfingMeshPipeTransport。请参阅 Transport 目标的主.m 以获取示例。