Estoy usando TcpClient para escuchar en un puerto las solicitudes. Cuando las solicitudes provienen del cliente, quiero saber la IP del cliente que realiza la solicitud.¿Cómo obtengo la dirección IP del cliente usando TcpClient?
He intentado:
Console.WriteLine(tcpClient.Client.RemoteEndPoint.ToString());
Console.WriteLine(tcpClient.Client.LocalEndPoint.ToString());
var networkStream = tcpClient.GetStream();
var pi = networkStream.GetType().GetProperty("Socket", BindingFlags.NonPublic | BindingFlags.Instance);
var socketIp = ((Socket)pi.GetValue(networkStream, null)).RemoteEndPoint.ToString();
Console.WriteLine(socketIp);
Todas estas direcciones 10.x.x.x salida direcciones que son direcciones privadas y claramente no son la dirección de los clientes de mi red hacer las solicitudes. ¿Qué puedo hacer para obtener la IP pública de los clientes que realizan las solicitudes?
Edit: Estamos utilizando un Amazon EC2 Load Balancer con tcp forwarding. ¿Hay alguna forma de obtener la ip del cliente verdadero en esta configuración?
cómo puede estar seguro de que las direcciones son "claramente" no las de los clientes fuera de su red. ¿Al menos conoce el rango de IP en el que residen sus clientes? ¿Residen en su red interna, residen en Internet público? –
Porque todos comienzan 10. - Esto indica un rango de ip privado no una dirección de IP pública. http://en.wikipedia.org/wiki/Private_network – brendan