来自android的java多播

ecfdbz9o  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(160)

我想在本地网络上的android上使用多播(android是服务器/发布服务器)。问题是,即使我使用baeldung的示例代码或《jeff friesen-learn java for android development》一书中的代码,数据包也不会到达本地网络上的任何其他设备。我使用wireshark进行故障排除,只有在远程捕获android的流量时才能看到这些数据包。我使用了不同的端口、不同的多播地址(从231、232、239开始),尝试了datagramsocket和multicastsocket,手动设置了网络接口,使用了multicastlock,增加了ttl,关闭了防火墙等等,但是这些建议对我都不起作用。
下面是我的示例代码:

doAsync {
        val group = InetAddress.getByName("224.0.0.114")
        val socket = DatagramSocket()

        while (true) {
            val msg = "hello world".toByteArray()
            val packet = DatagramPacket(msg, msg.size, group, 4239)
            socket.send(packet)
            Thread.sleep(1000)
        }
    }

android清单权限(我添加了所有与多播相关的内容):

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

我在物理设备(小米mi3,api 23)上测试代码,该设备与我的开发机器连接到同一个wi-fi。我只能在同一台设备上接收数据包。我还尝试发送广播信息,广播工作正常。
没有错误,没有警告。我错过什么了吗?
谢谢你的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题