大家好,
我正在使用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锁的正确位置吗?它甚至适用于以太网吗? 我知道有些设备不允许组播,是华硕变压器的情况吗?
我希望你能帮助我。 我知道这很复杂而没有看到代码,但是不可能,抱歉。
非常感谢!!