2009-12-03 33 views
20

Mi PC de cliente está conectada como servidor a través de sockets a través de Ethernet. ¿Cómo puedo encontrar la IP de este cliente desde el código del lado del servidor?
El servidor distribuye un socket por cliente en un nuevo Thread.
Cuando hago un csocket.getLocalAddress().toString() en el socket del cliente, sigo recibiendo la dirección IP del servidor. (csocket es el socket que ha generado el servidor en una conexión de cliente ahora y lo pasó a un nuevo subproceso).¿Cómo encontrar la dirección IP del cliente conectado al servidor?

Respuesta

42

Creo que usted desea utilizar el remote address lugar:

csocket.getRemoteSocketAddress().toString(); 
+0

¿Cómo obtener la IP del cliente del objeto HttpServer? mira aquí: http://stackoverflow.com/questions/25274828/get-client-ip-from-httpserver –

12

Creo que podría estar buscando el método getInetAddress del objeto Socket.

+0

que da la dirección local del zócalo. El servidor necesita encontrar la dirección remota desde su perspectiva. –

+11

@Stephen: según el Javadoc, 'getInetAddress()' "devuelve la dirección IP remota a la que está conectado este socket, o nulo si el socket no está conectado." – erickson

1

Usar este código:

String ip=(((InetSocketAddress) socket.getRemoteSocketAddress()).getAddress()).toString().replace("/",""); 
Cuestiones relacionadas