我正在尝试在 ios 中实现基于 Banjour 的应用程序。我也完全实现了成功将数据发送和接收到一个 iphone 到另一个 iphone。浏览服务中的所有其他设备后工作。并显示在表格中。
现在我想在表格视图中选择一些设备,并将数据发送到选定的设备
为此,我在每个设备中只创建了一个套接字。
CFSocketContext socketCtxt = {0, self, NULL, NULL, NULL};
witap_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET6, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);
if (witap_socket != NULL)
{
protocolFamily = PF_INET6;
}
else
{
witap_socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);
if (witap_socket != NULL)
{
protocolFamily = PF_INET;
}
}
现在我想将数据发送到选定的设备。为此,我存储了另一个 NSMutableArray 选定的 NSNetService(即设备)。使用时单击发送按钮将调用特定的操作。
-(void)SendActionFunction
{
for(int idx=0;idx<[selectedSer count];idx++)
{
NSNetService *service = [self.selectedSer objectAtIndex:idx];
NSLog(@"service......%@",[service name]);
self.currentResolve = [self.selectedSer objectAtIndex:idx];
[self.currentResolve setDelegate:self];
[self.currentResolve resolveWithTimeout:0.0];
}
}
如果我想为每个设备解析地址(上面的代码)。它只会为第一个设备解析。并得到错误
- (错误代码=-72003]
如果我解决了一个设备的地址,它会自动从 Tableview 中删除。
所以我的疑问是:
- 为什么选择的设备被撤销?
- 现在我创建基于 TCP 的套接字,如何添加目标地址来发送数据?
- 是否可以将数据从单个套接字发送到多个目的地?