DatagramSocket receive()不接收任何数据

时间:2018-07-02 11:35:38

标签: java android udp datagram

我编写了一个Android应用,该应用在UDP端口5150上侦听,以从连接到同一wifi路由器的设备接收编码的音频流。但是,对receive()方法的调用会被无限期阻止,并且不会接收任何数据。

int FRAME_SIZE = 480;
byte[] udpBuffer = new byte[FRAME_SIZE];
DatagramSocket socket;

socket = new DatagramSocket(5150);
datagramPacket = new DatagramPacket(udpBuffer, FRAME_SIZE);

System.out.println("Starting UDP listener");
for(;;){
        socket.receive(datagramPacket);
        System.out.println("receiving UDP data");
}

我已设置以下权限

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

不接收任何UDP数据的原因可能是什么?

1 个答案:

答案 0 :(得分:-1)

该问题是由于设备以相反的顺序返回的IP地址。结果,我发送给服务器的设备IP错误,导致服务器无法将数据发送到错误的目的地。解决此问题后,我可以接收数据。

谢谢大家的支持。