java - 如何查找网络上特定桌面的IP地址?

标签 java android sockets networking

我正在编写一个由两部分组成的应用程序。桌面版和安卓版。有一台桌面和几台 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 我认为这将是最好的方法。

  1. 服务器将监听来自客户端的广播消息
  2. 客户端发送广播请求询问服务器IP
  3. 服务器接收请求并回复服务器 IP。

关于java - 如何查找网络上特定桌面的IP地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36894588/

相关文章:

android - 在屏幕截图中模糊矩形

Android 异步任务减慢了我的 UI 线程

java - 一起使用 Solr 和 Zends Lucene 端口

java - 如何使用 SimpleDateFormat.parse() 将 Calendar.toString() 转换为日期?

c - 无法接收使用 MSG_MORE 标志发送的最后一个套接字数据

c - 使用套接字的事件服务(端口)

java - 如何让多个客户端连接到java服务器

java - IncompatibleClassChangeError : Class 'java.lang.VirtualMachineError' does not implement interface 'java.lang.CharSequence'

java - 深度克隆,同时保留对可变对象的共享引用

java - 如何创建子包并添加现有文件 intellij?