我希望获得一个可以使用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)
}
答案 0 :(得分:1)
您必须使用像所提到的here
之类的whatismyip这样的外部服务等效的scala代码,
def ipAddress(): String = {
val whatismyip = new URL("http://checkip.amazonaws.com");
val in:BufferedReader = new BufferedReader(new InputStreamReader(
whatismyip.openStream()));
return in.readLine()
}