Ich benutze TcpClient, um auf einen Port für Anfragen zu hören. Wenn die Anfragen vom Client eintreffen, möchte ich wissen, dass der Client ip die Anfrage macht.Wie bekomme ich Client-IP-Adresse mit TcpClient?
Ich habe versucht:
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);
All diese Adressen Ausgabe 10.x.x.x Adressen, die privaten Adressen sind und sind eindeutig nicht die Adresse der die Clients aus meinem Netzwerk die Anfragen. Was kann ich tun, um die Öffentlichkeit der Kunden, die die Anfragen stellen, zu erhalten?
Bearbeiten: Wir verwenden einen Amazon EC2 Load Balancer mit TCP-Weiterleitung. Gibt es eine Möglichkeit, den richtigen Client IP in diesem Setup zu bekommen?
Wie können Sie sicher sein, dass die Adressen "eindeutig" sind und nicht die der Clients in Ihrem Netzwerk? Kennst du zumindest den IP-Bereich, in dem sich deine Kunden aufhalten? Befinden sie sich in Ihrem internen Netzwerk, befinden sie sich im öffentlichen Internet? –
Weil sie alle 10 beginnen. - Dies zeigt einen privaten IP-Bereich an, nicht eine öffentliche IP-Adresse. http://en.wikipedia.org/wiki/Private_network – brendan