2013-02-20 14 views
6

Jeśli mam String reprezentujący adres IP (IPv4 lub IPv6), w jaki sposób mogę utworzyć ServerSocket i powiązać z tym adresem IP bez dbania, czy adres IP przekazany, to IPv4 lub IPv6?
Widzę, że istnieje konstruktor: ServerSocket(int port, int backlog, InetAddress bindAddr), ale InetAddress nie wydaje się oferować żadnych konstruktorów, a jego podklasy mają nazwy specyficzne dla IPv4 i IPv6.
Jak mogę powiązać gniazdo z adresem IP?Jak mogę powiązać serverocket z konkretnym IP?

Odpowiedz

20

Można użyć metody fabrycznej INetAddress.getByName. Dowiesz się, której podklasy użyć. Na przykład:

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

Masz na myśli podanie w moim IP i odzyskanie obiektu? – Jim

+0

@ Jim: Tak, dokładnie! Dodałem przykład, jak z niego korzystać. – vstm

+2

po prostu notatka: Domyślny "backlog" to 50: D. –

Powiązane problemy