【问题标题】:How to find specific desktop's ip address on network?如何在网络上找到特定桌面的 IP 地址?
【发布时间】:2016-04-27 15:41:10
【问题描述】:

我正在编写一个由两部分组成的应用程序。台式机和安卓。有一个桌面和几个安卓设备。 (不知道计数。)我想用 TCP 在桌面之间通信 android 设备。但是,android 设备不知道桌面的 lan ip 地址。

我认为有两种方法:

1-桌面应用程序在启动时更改本地 IP 地址。所以android设备知道IP地址。 (我用那个ip地址编码)

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

但是这两种方式都有一些问题。

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

其次,我认为会出现性能问题,因为应用程序总是尝试连接。例如,当 android 设备连接和 dhcp 给它 192.168.0.5 时,但循环在 192.168.0.150 上。所以安卓设备必须等待连接。

还有比这些更好的方法吗?

【问题讨论】:

    标签: java android sockets networking


    【解决方案1】:

    看这个帖子Network discovery in Java using multicasting 我认为这将是最好的方法。

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

    【讨论】:

    • 但是如果启用了ap隔离,设备不能通过udp互相访问。我尝试通过 tcp 进行广播,但速度太慢了。
    【解决方案2】:

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

    【讨论】:

    • 如有错误请指正。桌面应用程序将为 ex 设置一个主机名。 “blabla”,所有安卓设备都会尝试连接“blabla:port”。对吗?
    猜你喜欢
    • 2021-10-25
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    相关资源
    最近更新 更多