2013-02-20 4 views
6

IPアドレス(IPv4またはIPv6)を表すStringがある場合、どのようにしてServerSocketを作成し、IPが渡された場合でもこのIPにバインドできますか?
コンストラクタがあることがわかります:ServerSocket(int port, int backlog, InetAddress bindAddr)しかし、InetAddressはコンストラクタを提供していないようで、そのサブクラスはIPv4とIPv6に固有の名前を持っています。
どうすればソケットをIPにバインドできますか?serversocketを特定のIPにバインドする方法はありますか?

答えて

20

ファクトリメソッドINetAddress.getByNameを使用することができます。それはどのサブクラスを使用するかを決定します。例:

InetAddress addr = InetAddress.getByName("127.0.0.1"); 
// or 
InetAddress addr = InetAddress.getByName("::1"); 

// and now you can pass it to your socket-constructor 
ServerSocket sock = new ServerSocket(1234, 50, addr); 
+0

あなたは私のIPを渡してオブジェクトを返すのですか? – Jim

+0

@ジム:はい、まさに!私はそれを使用する方法の例を追加しました。 – vstm

+2

注:デフォルトの「バックログ」は50:Dです。 –

関連する問題