我想获得一个IP地址,可以使用scala在我的机器或我的LAN之外访问IP地址。使用scala获取当前机器的公共IP地址
使用案例场景:Web服务正在计算机上运行。在它的响应中,它应该返回一个端点的URL。因此,现在我必须提供运行Web服务的机器的IP地址
我使用NetworkInterface.getNetworkInterfaces()获取主机上的所有已知网络接口,然后遍历每个NI的地址。但在这种情况下,我得到了很多IP地址。我如何从所有这些人中找出正确的IP。 下面是Scala代码片段:
private def ipAddress: String = {
val enumeration = NetworkInterface.getNetworkInterfaces.asScala.toSeq
val ipAddresses = enumeration.flatMap(p =>
p.getInetAddresses.asScala.toSeq
)
val address = ipAddresses.find { address =>
val host = address.getHostAddress
host.contains(".") && !address.isLoopbackAddress && !address.isAnyLocalAddress && !address.isLinkLocalAddress
}.getOrElse(InetAddress.getLocalHost)
}
这不是一个阶题。而且它不仅仅是从IP列表中负责。什么是“正确”的地址将取决于你的机器周围的网络路由。有可能没有外部可达的地址(例如,我打字的机器就是这样)。所以请详细解释你的情况以及你想要做的事情。 –
还有其他几个问题可以解决这个问题。请参阅http://stackoverflow.com/questions/1145899/how-do-i-find-out-what-my-external-ip-address-is –
Web服务正在计算机上运行。在它的响应中,它应该返回一个端点的URL。所以现在我必须提供运行Web服务的机器的IP。 – user2613399