【问题标题】:Getting IP Address which is reachable by other devices on the network in Java用Java获取网络上其他设备可以访问的IP地址
【发布时间】:2019-05-19 17:57:31
【问题描述】:

我最近开始使用 Java 中的套接字,并使用静态方法 InetAddress.getLocalHost() 返回的 IP 地址来限制我的服务器套接字 有了这个,我的客户端在大多数情况下都能够连接到服务器。

但是,当我的服务器计算机具有复杂的网络时,它就不起作用了。静态方法InetAddress.getLocalHost() 返回了一个客户端机器无法访问的地址

我想知道,如何获取通过Java连接到同一网络的其他设备可以访问的IP地址?

【问题讨论】:

  • InetAddress.getLocalHost()返回的地址是什么,为什么客户端无法访问?这听起来更像是网络管理问题。
  • 由于计算机有许多接口,并且每个接口都可以与任何可能的地址绑定,我在某处读到 InetAddress.getLocalHost() 在复杂的网络中不太可靠
  • 我建议您看这里:How to Determine Internet Network Interface in Java 并满足您的需求

标签: java


【解决方案1】:

InetAddress.getLocalHost() 是映射到主机名的地址。这就是它所说的一切。根据您的主机和网络设置以及您的意图,您从中得到的可能是也可能不是您想要绑定套接字的内容。

套接字绑定到一个或多个网络接口,并将侦听这些接口。可以通过调用获取所有接口的列表:

NetworkInterface.getNetworkInterfaces()

我相信您也可以绑定到地址“0.0.0.0”,它表示绑定到您的所有网络接口。这个我以前用过,不知道基础socket API是否支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2015-04-23
    相关资源
    最近更新 更多