大家好,

我正在使用udp多播进行项目 . 我有一台服务器通过以太网线发送组播udp数据包 . 我花了几周时间阅读有关Android上多播的所有帖子,我仍然无法在我的华硕Transformer Tablet 4.1上收到任何udp数据包 .

由于某些原因,我不能把我的代码放在这里,我会尽量仔细解释 .

我有一个简单的MainActivity显示一些东西 . 几乎所有东西都是 Oncreate 方法,我调用名为 UDPreceiver 的方法的行也是如此 . 此方法在名为 UDPreceiverClass 的类中定义 .

UDPreceiver 中,有接收组播udp的经典代码:Multicastsocket,joingroup ...我已经在我的计算机上的java程序中测试了这段代码并且它正在运行 .

在这个非常Oncreate方法的上面,我已经获得了wifi锁:

WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null){
    WifiManager.MulticastLock lock = wifi.createMulticastLock("Log_Tag");
    lock.acquire();
}

但我不确定我是否必须使用相同的以太网连接(我没有找到任何其他类似的锁) .

我拥有清单中的所有权限:

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

甚至更多(我添加了所有与网络链接的权限) .

我很快就能在Wifi上试一试,但我也不是很自信 .

如果我以单播方式发送,我的代码正在使用我的平板电脑,而不是在多播中!

你对此有什么建议吗?它是放置Wifi锁的正确位置吗?它甚至适用于以太网吗?我知道有些设备不允许组播,是华硕变压器的情况吗?

我希望你能帮助我 . 我知道这很复杂而没有看到代码但是不可能,抱歉 .

非常感谢你 !!