Akka/Spray框架如何获取客户端的IPv6地址?
How do I obtain the client's IPv6 address in the Akka/Spray framework?
我目前正在使用以下代码获取 IPv4 地址:
import spray.http.RemoteAddress
...
val ipV4: String = remoteAddress.toOption.map(_.getHostAddress).getOrElse("<unknown>")
但是,我似乎找不到任何有关对 IPv6 执行相同操作的信息。如有任何帮助,我们将不胜感激。
这不取决于您的方法 - 它取决于您的网络配置。
Look at the source code 共 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 的本地电脑上 运行 您的代码,您将会看到。
这是您实际从 Java 收到的对象:http://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html
我目前正在使用以下代码获取 IPv4 地址:
import spray.http.RemoteAddress
...
val ipV4: String = remoteAddress.toOption.map(_.getHostAddress).getOrElse("<unknown>")
但是,我似乎找不到任何有关对 IPv6 执行相同操作的信息。如有任何帮助,我们将不胜感激。
这不取决于您的方法 - 它取决于您的网络配置。
Look at the source code 共 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 的本地电脑上 运行 您的代码,您将会看到。
这是您实际从 Java 收到的对象:http://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html