测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可 | BSD |
发布最后发布 | 2016年2月 |
由 Nevyn Bengtsson,Nevyn Bengtsson 维护。
作者 Nevyn Bengtsson,2015-08-09
MeshPipe 是一个 iOS 的 IPC(进程间通信) 库,使用 UDP 网络通信。它允许单个 iOS 设备上运行的多达多个应用程序相互发送任意数据。它
由于它是基于 UDP 的,因此有一些固有的限制
首先,选择一个端口和参与应用程序的最大数量。
每个应用程序将尝试连接到 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 的底部列出。
如果您想要在 MeshPipe 网络中传输更多有趣类型的数据,可以使用 Cerfing 和附加的 CerfingMeshPipeTransport。请参阅 Transport 目标的主.m 以获取示例。