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?
6
A
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);
Sie meinen, in meiner IP übergeben und das Objekt zurück? – Jim
@Jim: Ja genau! Ich habe ein Beispiel hinzugefügt, wie man es benutzt. – vstm
nur eine Anmerkung: Der Standard 'Rückstand' ist 50: D. –