web-dev-qa-db-ja.com

サーバーソケットを特定のIPにバインドするにはどうすればよいですか?

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

11
Jim

ファクトリメソッドを使用できます 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);
31
vstm