如何使用GCDAsyncUdpSocket通过wifi和蓝牙进行组播
我目前使用GCDAsyncUdpSocket在iOS设备之间通过wifi发送多播数据报。
守则很简单..
客户
self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; //omitted error checking [self.socket bindToPort:12345 error:&err]; [self.socket joinMulticastGroup:@"224.0.1.1" error:&err]; [self.socket beginReceiving:&err];
服务器
self.multicastSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; NSData *d = [@"hello" dataUsingEncoding:NSUTF8StringEncoding]; [self.multicastSocket sendData:d toHost:@"224.0.1.1" port:12345 withTimeout:-1 tag:11];
这工作得很好,无线networking。 我如何使它通过蓝牙工作呢? 我GOOGLE了一堆,找不到任何东西…我需要创build两个单独的套接字? 一个绑定到wifi接口,另一个绑定到蓝牙接口?
编辑:还是我困惑的东西根本? 这一定是可能的。 GameKit的GKSession完全是这样的,对吧?
我想你错过了英国电信协议BT协议的BT协议。 另外,多播依靠networking设备(路由器)来pipe理这些组和注册。 BT需要ZeroConfnetworking(也可以用于wifi)的概念,但是以对等的方式进行pipe理。 看看Bonjour或者Dnssd的实现比GameKit更接近套接字级别。
你非常接近。 您可以在此StackOverflow问题中find有用信息的指针,也可以使用包装此function的HHServices等库。
老实说我已经尝试过这条路线,但是我希望这一点能让你朝正确的方向发展。 让我知道,如果你已经知道了!