我正在使用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.x.x.x地址,这是私有地址,显然不是发出请求的我的网络之外的客户端的地址。我该怎么做才能获取发出请求的客户端的公共IP地址?
编辑:我们正在使用Amazon EC2负载均衡器进行TCP转发。在此设置中,有办法获取真实的客户端IP吗?