2013-02-20 30 views
6

Wenn ich eine String habe, die eine IP-Adresse (IPv4 oder IPv6) darstellt, wie kann ich eine ServerSocket erstellen und an diese IP binden, ohne sich darum zu kümmern, ob die IP IPv4 oder IPv6 ist?
Ich sehe, dass es einen Konstruktor gibt: ServerSocket(int port, int backlog, InetAddress bindAddr) aber InetAddress scheint keine Konstruktoren anzubieten und seine Unterklassen haben Namen, die spezifisch für IPv4 und IPv6 sind.
Also, wie kann ich den Socket an die IP binden?Wie kann ich Serversocket an bestimmte IP binden?

Antwort

20

Sie können die Factory-Methode INetAddress.getByName verwenden. Es wird herausfinden, welche Unterklasse zu verwenden ist. Zum Beispiel:

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

Sie meinen, in meiner IP übergeben und das Objekt zurück? – Jim

+0

@Jim: Ja genau! Ich habe ein Beispiel hinzugefügt, wie man es benutzt. – vstm

+2

nur eine Anmerkung: Der Standard 'Rückstand' ist 50: D. –