//初始化响应socket self.responseSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatchgetmain_queue()];
//绑定广播响应端口
[self.responseSocket bindToPort:0xfaa5 error:&error];
if (error) {
NSLog(@"绑定响应端口%d失败%@",0xfaa5,error);
}
[self.responseSocket enableBroadcast:YES error:nil];
if (error) {
NSLog(@"开启组播%d失败%@",0xfaa5,error);
}
[self.responseSocket joinMulticastGroup:@"239.2.2.2" error:&error];
if (error) {
NSLog(@"开启加入组播%d失败%@",Port_Response,error);
}
//开始接收数据
[self.responseSocket beginReceiving:&error];
if (error) {
NSLog(@"开始接收数据失败..%@",error);
}
组播地址改成224.0.0.1就可以接收到,改称239.2.2.2就不行了。 iOS是不支持239...*这个地址么?
不懂为什么不行,不过你的 enableBroadcast 那里最后error传了个nil,判断的时候还用上一个error,小笔误一个。另外如果实在用GCDAsyncUdpSocket 不能发,也可以试试用更低一点的BSD的 socket api来试试。 P.S. 楼主还可以试着在 stackoverflow上发一下试试。