2016-04-27 87 views
0

我正在编写由两部分组成的应用程序。桌面和Android。有一个桌面和几个Android设备。 (不知道计数。)我想在桌面与TCP之间通信android设备。但是,android设备不知道桌面的lan ip地址。如何在网络上查找特定桌面的IP地址?

我thouht 2种方式:

1 - 桌面应用程序上的改变开始的本地IP地址。所以android设备知道ip地址。 (我使用该IP地址编码)

2 - 桌面应用程序总是尝试将IP地址(192.168.0.1 - 192.168.0.255)连接到已发送桌面的IP地址。当Android设备连接到网络接受连接,然后知道桌面的IP。

但两种方式都存在一些问题。

首先,您必须是管理员才能更改lan ip。所以用java运行命令admin是一个问题。因为如果我这样做,当用户启动程序时,uac总是要求它。

第二,我认为会有性能问题,因为应用程序总是尝试连接。解开这个,当android设备连接和dhcp给它192.168.0.5,但循环是在192.168.0.150。所以android设备必须等待连接。

有没有比这更好的方法?

回答

0

您可以使用主机名。如果网络配置正确,主机名将指向正确的IP,即使它发生变化

+0

如果有错请纠正。桌面应用程序会为ex设置一个主机名。 “blabla”和所有android设备将尝试连接“blabla:port”。对? –

1

看这篇文章Network discovery in Java using multicasting 我认为这将是最好的办法。

  1. 服务器将侦听的广播消息从客户端
  2. 客户端发送的广播请求,要求服务器IP
  3. 服务器接收请求,并与服务器IP回复回来。
+0

但如果启用了ap隔离,则设备无法通过udp访问彼此。我试图通过TCP广播,但它很慢。 –