4

ソケット接続のIPを文字列形式で取得しようとしています。

受信したメッセージのを返すフレームワークを使用していSocketAddressます。どうすればそれをInetSocketAddressまたはに変換でき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 に答える