有用GCDAsyncUdpSocket发送接收组播的么?

2014-01-22 10:57:46 +08:00
 eggacher
//初始化响应socket
self.responseSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self
delegateQueue:dispatch_get_main_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.*.*.*这个地址么?
6009 次点击
所在节点    iDev
1 条回复
eggacher
2014-01-23 09:27:36 +08:00
找到原因了,GCDAsyncUdpSocket默认设置TTL为1,值改大点就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/97952

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX