我正在使用 TcpClient 在端口上侦听请求。当请求来自客户端时,我想知道发出请求的客户端 IP。
我试过了:
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);
所有这些地址都输出 10.xxx 地址,这些地址是私有地址,显然不是我网络外发出请求的客户端的地址。我该怎么做才能获得发出请求的客户的公共 IP?
编辑: 我们正在使用带有 tcp 转发的 Amazon EC2 负载均衡器。有没有办法在这个设置中获得真正的客户端 IP?