我无法收到DatagramPacket
。使用wireshark,我可以验证数据包是否到达。我在此站点上看到了类似的问题以及可能的解决方案,但是它们对我没有太大帮助(我已经尝试停用防火墙等)。我的代码很简单:
// Create socket
DatagramSocket socket = new DatagramSocket(5554);
socket.connect(InetAddress.getByName("192.168.1.1"), 5554);
try {
while(!stop) {
keepAwake(); // This sends some bytes using socket.send(...), works perfectly fine
DatagramPacket packet = new DatagramPacket(new byte[2048], 2048);
socket.receive(packet); // Does not work :(
System.out.println("[DEBUG] Packet received!"); // Never happens
// Parse packet
}
} catch (Exception e) {
e.printStackTrace(); // Also no exceptions are thrown
}
这可能是什么问题?顺便说一句,我的操作系统是Ubuntu 12.10,数据包是从用C编写的服务器发送的,而我没有源代码(DatagramSocket是否只接收从Java DatagramSocket发送的DatagramPackets?)。
我真的很感谢任何建议!
最佳答案
尝试使用IP为0.0.0.0和所需端口而不是“ connect()”的bind()。
编辑:实际上,构造函数已经绑定了它,忽略连接就足够了。
从文档:
当套接字连接到远程地址时,数据包只能发送到该地址或从该地址接收。
这可能就是为什么您没有收到数据包的原因。