当前位置:  开发笔记 > 编程语言 > 正文

Java中的UDP广播

如何解决《Java中的UDP广播》经验,为你挑选了1个好方法。

早上.

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

user207421.. 11

这没有意义.您正在广播,这是1对多,您也在连接,即1对1.这是什么?

失去连接.并输掉255.255.255.255.这已被大约弃用了大约20年.使用子网本地广播地址,例如192.168.1.255.



1> user207421..:

这没有意义.您正在广播,这是1对多,您也在连接,即1对1.这是什么?

失去连接.并输掉255.255.255.255.这已被大约弃用了大约20年.使用子网本地广播地址,例如192.168.1.255.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有