2017-11-13 17 views
0

SocketAddresのために設計されているのは不明です。私の知る限り、InetSocketAddressを使用すると、それを使用する妥当な方法が1つしかありません。ややこしい。 Documentation of SocketAddressからJavaのSocketAddressとInetAddressの違い

+2

をエンドポイントでソケットを作成するために使用され、あなたは読みましたドキュメント(および関連するサブクラスのドキュメント)ドキュメントのどの部分を理解していない、または混乱させていますか? –

答えて

1

このクラスは、プロトコルに関連付けられていないソケットアドレスを表します。抽象クラスとして、特定のプロトコルに依存する実装でサブクラス化されることを意図しています。 Documentation of InetAddressから

このクラスは、インターネットプロトコル(IP)アドレスを表します。

したがって、抽象クラスとしてのプロトコルを持たないソケットを表します。もう1つは、IPアドレスを表します。おそらくあなたが探しているのはInetSocketAddress(特定のIP /ホスト名とポートにバインドされたソケット)です。

0

SocketAdress

このクラスは、プロトコルに関連付けられていないソケットアドレスを表します。抽象クラスとして、特定のプロトコルに依存する実装でサブクラス化されることを意図しています。

InetAdress

このクラスは、インターネットプロトコル(IP)アドレスを表します。

はたぶん、あなたは、それはまたペア(ホスト名+ポート番号)、約 たInetSocketAddress

このクラスは、IPソケットアドレス(IPアドレス+ポート番号)を実装を知っているしたい場合、ホスト名を解決しようとします。解決が失敗した場合、そのアドレスは解決されていないと言われますが、プロキシ経由で接続するような状況でも使用できます。

1

InetAddressのは、指定したWebサイト 例のIPアドレスを与える:

InetAddress ip=InetAddress.getByName("www.google.com"); 

System.out.println("Host Name: "+ip.getHostName()); 
System.out.println("IP Address: "+ip.getHostAddress()); 

はSocketAdressはInetAddressのポート番号

InetAddress addr = InetAddress.getByName("www.google.com"); 
    int port = 80; 
    SocketAddress sockaddr = new InetSocketAddress(addr, port); 

    Socket sock = new Socket(); 

    sock.connect(sockaddr); 
関連する問題