DatagramSocket receive() 没有接收到任何数据
Posted
技术标签:
【中文标题】DatagramSocket receive() 没有接收到任何数据【英文标题】:DatagramSocket receive() not receiving any data 【发布时间】:2018-07-02 11:35:37 【问题描述】:我编写了一个 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 数据的原因可能是什么?
【问题讨论】:
呃,没人给你发邮件吗? 我有一个可以接收 UDP 数据的 ios 应用程序。只有安卓有这个问题。因此可以安全地假设数据是由源发送的。 您发布的代码中没有任何内容可以接收任何内容。未经证实。 我在代码中使用了简单的 socket.receive(datagramPacket) 并有足够的异常处理。 不在此代码中。此处发布的代码应该可以证明该问题。这没有。 【参考方案1】:问题是由于设备返回的 IP 地址顺序相反。结果,我发送到服务器的设备 IP 不正确,导致服务器将数据发送到错误的目的地。修复此问题后,我能够接收数据。
感谢大家的支持。
【讨论】:
什么服务器?你的问题中没有提到。您的问题是数据是由设备而不是服务器发送的。以上是关于DatagramSocket receive() 没有接收到任何数据的主要内容,如果未能解决你的问题,请参考以下文章