gpt4 book ai didi

android - 如何在 Android 上接收多播数据包

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:01 31 4
gpt4 key购买 nike

我正在尝试从多播地址接收数据,但对 MulticastSocket.receive() 的调用会阻塞,直到发生超时。我做了一些网络嗅探,发现我的设备(和模拟器)从不发送 MulticastSocket.joinGroup 请求。我尝试从我的 PC 上运行相同的 Java 代码作为一个独立的应用程序,它运行良好。会不会是Android平台屏蔽了IGMP加入请求?以前有人在 Android 上成功使用多播吗?

我的 list 文件包含以下权限:

我在 2.1(模拟器和设备)上运行我的应用程序。

有什么想法吗?

谢谢,

最佳答案

Lukas 给出了我在他的博客上看到的最好的解释和示例:http://codeisland.org/2012/udp-multicast-on-android

总结:
1. 您需要权限:

<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"/>


2. 你需要一把锁:

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


3.你必须有一个支持接收组播的设备。或者,您可以关注他针对已获得 root 权限的设备所做的工作。

关于android - 如何在 Android 上接收多播数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179710/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com