欢迎使用CSDN-markdown编辑器

来源:互联网 发布:讨鬼传极优化 编辑:程序博客网 时间:2024/06/04 22:34

关于AsyncUdpSocket同wifi下收不到消息

这2天有空的时候弄了个小demo,在2台iphone上,同一wifi下使用udp协议进行发送,接受消息。然后就碰到同一wifi下有时候会收不到消息的情况。

不废话,直接先上代码(server端):

//初始化udp    AsyncUdpSocket *tempSocket=[[AsyncUdpSocket alloc] initWithDelegate:self];    self.udpSocket=tempSocket;    //绑定端口    NSError *error = nil;    [self.udpSocket bindToPort:4333 error:&error];    //发送广播设置    [self.udpSocket enableBroadcast:YES error:&error];    //加入群里,能接收到群里其他客户端的消息    [self.udpSocket joinMulticastGroup:@"192.168.1.111" error:&error];    //启动接收线程    [self.udpSocket receiveWithTimeout:-1 tag:0];

客户端发送一个消息

BOOL  res = [self.udpSocket sendData:[sendString dataUsingEncoding:NSUTF8StringEncoding]                                 toHost:@"192.168.1.111"                                   port:4333                            withTimeout:-1                                   tag:0];    NSLog(@"send msg is:%@",sendString);    self.statusLb.text = sendString;    if (!res) {        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"                                                        message:@"发送失败"                                                       delegate:self                                              cancelButtonTitle:@"取消"                                              otherButtonTitles:nil];        [alert show];    }

客户端发送一条消息后,服务端死活收不到消息。更奇怪的上2台设备更换另外一个wifi的时候,就收得到。同样的代码为什么一个收得到,另外一个wifi下收不到呢?

后来,请教了下公司的一个大牛,一句话就搞定了:2台设备都在浏览器下先输入路由地址(比如:192.168.1.1)访问下,然后就可以再试下收不收得到了。

为什么?因为要先连通下网络!! =。= 这个。。。。

0 0