我正在尝试以字符串形式获取套接字连接的 IP。
我正在使用一个框架,它返回SocketAddress
接收到的消息的。我怎样才能将其转换为InetSocketAddress
or InetAddress
?
我正在尝试以字符串形式获取套接字连接的 IP。
我正在使用一个框架,它返回SocketAddress
接收到的消息的。我怎样才能将其转换为InetSocketAddress
or InetAddress
?
如果您确定该对象是一个InetSocketAddress
然后简单地转换它:
SocketAddress sockAddr = ...
InetSocketAddress inetAddr = (InetSocketAddress)sockAddr;
然后,您可以调用该getAddress()
方法inetAddr
以获取InetAddress
与其关联的对象。
您可以尝试投射到它。在这种情况下,这是向下转换。
InetSocketAddress isa = (InetSocketAddress) socketAddress;
ClassCastException
但是,如果课程不是您所期望的,这可能会抛出。
可以通过instanceof
操作员对此进行检查:
if (socketAddress instanceof InetSocketAddress) {
InetSocketAddress isa = (InetSocketAddress) socketAddress;
// invoke methods on "isa". This is now safe - no risk of exceptions
}
可以对 的其他子类进行相同的检查SocketAddress
。
实际上SocketAddress
是一个抽象类,所以你会收到它的一些子类。SocketAddress
你有没有尝试投回InetSocketAddress
?