我正在设计安装在客户端网络上的设备。目前,全世界大约安装了180台设备。一个主要问题是稍后访问它们以进行调试。
背景:
所有设备的工作方式都相同。
目前获取地址的方法是:
使用任何可用的远程桌面软件登录客户端的计算机,然后搜索:
期待:
实际上我知道可以通过网络上的广播而不知道其IP地址与网络上的设备进行通信,但尚未找到任何示例或起点。我想编写一个能够在网络上广播的小型Java程序:
请记住:我想找到没有键盘,屏幕或其他UI的设备。如果我从客户端(出于调试目的)收到一个单元,例如用10.1.1.100配置,而我的计算机在192.168.1.110(在同一个交换机上),我希望能够先知道这个的IP地址设备,第二,能够发送SET IP命令(一旦我能够发送数据,我将管理如何处理它。)
对于设备的服务器部分,我不介意,它可以用C ++或脚本完成......这可能需要回答广播和接收请求。
到目前为止,我已经能够创建一个小型UDP客户端和服务器。
使用DatagramSocket
的Java中的客户端,使用recvfrom()
的C中的服务器。
此解决方案的问题是我的计算机需要与设备具有相同的网络掩码,例如:
更多,需要将本地计算机网络掩码更改为meed广播范围似乎是Java的限制......
new DatagramPacket(sendData, sendData.length, InetAddress.getByName("255.255.255.255"), PORT); // not working
new DatagramPacket(sendData, sendData.length, InetAddress.getByName("192.168.255.255"), PORT); // working only if netmask is 255.255.0.0
我想我需要更深入地使用网络协议来按照我想要的方式进行,并且我知道这是可能的。