早晨。
我在 Java 和套接字连接方面还很陌生,但我试图在端口 8001 上的 255.255.255.255 上向设备发送一个 UDP 数据包/广播。我可以很好地发送数据,但是当需要接收数据时,连接超时。我有一个数据包嗅探器,我可以看到数据包发送,然后设备响应。
我很确定这是我的代码中缺少的一个新手错误,但我已经坚持了一段时间,任何帮助将不胜感激。
m_Socket = new DatagramSocket(m_SERVERPORT);
InetAddress address = InetAddress.getByName(m_SERVERIP);
m_DataPack = new DatagramPacket(m_SERVERCMD.getBytes(), m_SERVERCMD.getBytes().length,
address, m_SERVERPORT);
m_Socket.setBroadcast(true);
m_Socket.connect(address, m_SERVERPORT);
m_Socket.send(m_DataPack);
m_DataPack = new DatagramPacket(data, data.length,
address, m_SERVERPORT);
m_Socket.receive(m_DataPack); // This is where it times out
data = m_DataPack.getData();
String received = data.toString();
System.out.println("Received: " + received);
m_Socket.close();
谢谢和Gig'Em。
编辑:
我不确定这是否有帮助,但是当我观看 m_Socket 对象时,我可以在它发送之前看到以下内容:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
m_DataPack 对象如下:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;