3

大家好,

我正在开发一个带有 udp 多播的项目。我有一台服务器通过以太网电缆发送多播 udp 数据包。我花了数周的时间阅读有关 android 上的多播的所有帖子,但我仍然无法在我的 Asus 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 锁的位置合适吗?它甚至适用于以太网吗?我知道有些设备不允许多播,华硕变压器是这种情况吗?

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

非常感谢 !!

4

0 回答 0