我正在编写一个由两部分组成的应用程序。桌面版和安卓版。有一台桌面和几台 Android 设备。 (不知道计数。)我想使用 TCP 在桌面之间通信 Android 设备。但是,Android 设备不知道桌面的 LAN IP 地址。
我想了两种方法:
1-桌面应用程序在启动时更改本地 IP 地址。所以android设备知道ip地址。 (我用那个IP地址编码)
2-桌面应用程序始终尝试将 IP 地址 (192.168.0.1 - 192.168.0.255) 连接到发送桌面的 IP 地址。当 Android 设备连接到网络时接受连接,然后知道桌面的 IP。
但是这两种方式都存在一些问题。
首先,您必须是管理员才能更改 LAN IP。所以用java以管理员身份运行命令是一个问题。因为如果我这样做,当用户启动程序时,uac 总是会要求它。
其次,我认为会出现性能问题,因为应用程序总是尝试连接。除此之外,当 Android 设备连接并且 dhcp 给它 192.168.0.5 时,但循环位于 192.168.0.150 上。所以android设备必须等待连接。
还有比这些更好的方法吗?
最佳答案
看看这篇文章Network discovery in Java using multicasting 我认为这将是最好的方法。
- 服务器将监听来自客户端的广播消息
- 客户端发送广播请求询问服务器IP
- 服务器接收请求并回复服务器 IP。
关于java - 如何查找网络上特定桌面的IP地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36894588/