我想獲得一個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