gpt4 book ai didi

java - Java中的UDP广播

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:05 28 4
gpt4 key购买 nike

早上好。

我是 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;

最佳答案

这没有意义。你在广播,就是一对多,你也在连接,就是一对一。是哪个?

失去联系。并丢失 255.255.255.255。这已经被严重弃用了大约 20 年。使用子网本地广播地址,例如192.168.1.255.

关于java - Java中的UDP广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950715/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com