4

我正在尝试以字符串形式获取套接字连接的 IP。

我正在使用一个框架,它返回SocketAddress接收到的消息的。我怎样才能将其转换为InetSocketAddressor InetAddress

4

3 回答 3

7

如果您确定该对象是一个InetSocketAddress然后简单地转换它:

SocketAddress sockAddr = ...
InetSocketAddress inetAddr = (InetSocketAddress)sockAddr;

然后,您可以调用该getAddress()方法inetAddr以获取InetAddress与其关联的对象。

于 2010-03-20T17:38:19.503 回答
4

您可以尝试投射到它。在这种情况下,这是向下转换

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

于 2010-03-20T17:39:28.077 回答
1

实际上SocketAddress是一个抽象类,所以你会收到它的一些子类。SocketAddress你有没有尝试投回InetSocketAddress

于 2010-03-20T17:38:19.207 回答