Comment puis-je obtenir l'adresse ip du client à l'aide de TcpClient?

Je suis en utilisant TcpClient pour écouter sur un port pour les demandes. Lorsque la demande du client, je veux savoir l'adresse ip du client qui fait la demande.

J'ai essayé:

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

Toutes ces adresses de sortie 10.x.x.x, les adresses sont des adresses privées et ne sont clairement pas l'adresse de les clients en dehors de mon réseau faire la demande. Que puis-je faire pour obtenir l'adresse ip publique de la les clients faire la demande?

Edit:
Nous sommes à l'aide d'une instance Amazon EC2 Équilibreur de Charge avec tcp forwarding. Est-il un moyen pour obtenir l'ip du client dans cette mise en place?

  • comment pouvez-vous être sûr que les adresses sont "clairement" non pas ceux des clients de votre réseau. Faites-vous connaître au moins la plage d'adresses IP à vos clients de séjourner dans? Ils se trouvent dans le réseau interne, ils résident dans le public à l'internet?
  • Parce qu'ils commencent tous 10. - Cela indique une adresse ip privée plage qui n'est pas une adresse ip publique. en.wikipedia.org/wiki/Private_network
  • S'il vous plaît changer la accepté de répondre à
InformationsquelleAutor brendan | 2010-04-26