android-Android udp接收不到组播,请问如何解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android-Android udp接收不到组播,请问如何解决相关的知识,希望对你有一定的参考价值。

参考技术A 这是因为在AP模式下,没有添加组播路由。你可以在AP模式下的时候,去查看一下wifi的信息,你会发现除了默认的ip之外,wifi上没有相应的组播路由

如何接收组播 UDP?

【中文标题】如何接收组播 UDP?【英文标题】:How to receive Multicast UDP? 【发布时间】:2012-11-19 17:35:19 【问题描述】:

我正在使用 GCDAsyncUdpSocket,我可以发送多播或普通 UDP 数据包。我可以正常接收数据包,但无法从其他 iOS 设备接收多播数据包。

接收我使用:

- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:   (NSData *)address withFilterContext:(id)filterContext
 NSString *msg = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

NSString *host = nil;
uint16_t port = 0;
[GCDAsyncUdpSocket getHost:&host port:&port fromAddress:address];

if (msg)
   
    NSLog(@"Message = %@, Adress = %@ %i",msg,host,port);

else

    NSLog(@"Error converting received data into UTF-8 String");


【问题讨论】:

【参考方案1】:

确保正确设置了多播套接字。这是我在多播项目中所做的:

- (void)setupSocket

    udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
    NSError *error = nil;
    if (![udpSocket bindToPort:5555 error:&error])
    
        NSLog(@"Error binding to port: %@", error);
        return;
    
    if(![udpSocket joinMulticastGroup:@"226.1.1.1" error:&error])
        NSLog(@"Error connecting to multicast group: %@", error);
        return;
    
    if (![udpSocket beginReceiving:&error])
    
        NSLog(@"Error receiving: %@", error);
        return;
    
    NSLog(@"Socket Ready");

【讨论】:

以上是关于android-Android udp接收不到组播,请问如何解决的主要内容,如果未能解决你的问题,请参考以下文章

RT1052接收不到 UDP 组播包 问题解决

udp为啥收不到广播中的数据,该怎么处理

如何接收组播 UDP?

求助 有个android手机建立热点后发送组播信息的问题

Android对UDP组播接收数据的有限支持

C UDP组播接收丢包