2013-02-20 19 views
6

Se ho un String che rappresenta un indirizzo IP (IPv4 o IPv6), come posso creare un ServerSocket e collegarlo a questo IP senza preoccuparmi se l'IP è passato, è IPv4 o IPv6?
Vedo che c'è un costruttore: ServerSocket(int port, int backlog, InetAddress bindAddr) ma il InetAddress non sembra offrire alcun costrutto e le sue sottoclassi hanno nomi specifici per IPv4 e IPv6.
Quindi, come posso associare il socket all'IP?Come posso associare serverocket a un IP specifico?

risposta

20

È possibile utilizzare il metodo di fabbrica INetAddress.getByName. Scoprirà quale sottoclasse usare. Ad esempio:

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

Vuoi dire passare il mio IP e recuperare l'oggetto? – Jim

+0

@ Jim: Sì, esattamente! Ho aggiunto un esempio su come usarlo. – vstm

+2

solo una nota: il "backlog" predefinito è 50: D. –

Problemi correlati