Java 来自Android的多播

Java 来自Android的多播,java,android,sockets,kotlin,multicast,Java,Android,Sockets,Kotlin,Multicast,我想在本地网络上使用Android上的多播(Android是服务器/发布服务器)。问题是,即使我使用了《Jeff Friesen-Learn Java for Android Development》一书中的确切示例代码,数据包也不会到达本地网络上的任何其他设备。我使用Wireshark进行故障排除,只有在远程捕获Android的流量时才能看到这些数据包。我使用了不同的端口、不同的多播地址(从231、232、239开始),尝试了DatagramSocket和MulticastSocket,手动设

我想在本地网络上使用Android上的多播(Android是服务器/发布服务器)。问题是,即使我使用了《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清单权限(我添加了所有应该与多播相关的内容):


我在物理设备(小米Mi3,API 23)上测试代码,该设备与我的开发机器连接到同一个Wi-fi。我只能在同一台设备上接收数据包。我还尝试发送广播信息,广播工作正常

没有错误,没有警告。我错过什么了吗

谢谢你的帮助

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