我目前正在使用以下代码获取IPv4地址:
import spray.http.RemoteAddress
...
val ipV4: String = remoteAddress.toOption.map(_.getHostAddress).getOrElse("<unknown>")
但是,我似乎无法找到有关为IPv6做同样事情的任何信息。对此的任何帮助将不胜感激。
答案 0 :(得分:2)
它不依赖于您的方法 - 它取决于您的网络配置。
spray.http.RemoteAddress
的
def apply(bytes: Array[Byte]): RemoteAddress = {
require(bytes.length == 4 || bytes.length == 16)
try IP(InetAddress.getByAddress(bytes)) catch { case _: UnknownHostException ⇒ Unknown }
}
此代码包含IPv4(4字节)和IPv6(16字节)。因此,您将收到IPv4地址,IPv6地址或特殊的Pv4映射到IPv6地址取决于您的网络设置。
尝试在配置为使用IPv6的网络接口的本地PC上运行代码,您将看到。
这是您实际从Java获得的对象:http://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html