Wie bekomme ich die client-ip-Adresse mit TcpClient?

Ich bin mit TcpClient zu lauschen auf einem port auf Anfragen. Wenn die Anfragen vom client, ich möchte wissen, die client-ip-Anfrage.

Ich versucht habe:

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);

Alle diese Adressen Ausgabe-10.x.x.x Adressen sind private Adressen und sind eindeutig nicht die Adresse des die clients aus meinem Netzwerk Anfragen. Was kann ich tun, um die öffentliche ip des clients Anfragen?

Edit:
Wir sind ein Amazon EC2-Load-Balancer mit tcp-Weiterleitung. Gibt es einen Weg, um die echte client-ip-in diesem set up?

wie können Sie sicher sein, dass die Adressen sind "eindeutig" nicht die von den clients aus Ihrem Netzwerk. Tun Sie zumindest wissen, die IP-Bereich Ihrer Kunden wohnen? Sie befinden sich in Ihrem internen Netzwerk, tun Sie sich befinden, die im öffentlichen internet?
Weil Sie alle mit 10. - Dies weist auf einen privaten ip-Bereich eine nicht-öffentliche ip-Adresse. en.wikipedia.org/wiki/Private_network
Bitte ändern Sie die akzeptierte Antwort

InformationsquelleAutor brendan | 2010-04-26

Schreibe einen Kommentar