bre*_*dan 36 .net c# tcpclient
我正在使用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);
Run Code Online (Sandbox Code Playgroud)
所有这些地址都输出10.xxx地址,这些地址是私有地址,显然不是我网络上发出请求的客户端的地址.如何获取发出请求的客户端的公共IP?
编辑: 我们正在使用带有tcp转发的Amazon EC2负载均衡器.有没有办法在这个设置中获得真正的客户端IP?
Kel*_*sey 95
这有用吗:
((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address.ToString()
Run Code Online (Sandbox Code Playgroud)
如果客户端通过内部网络连接到您,我不确定您是否可以获取其公共IP,因为返回客户端的连接不需要该信息.
| 归档时间: |
|
| 查看次数: |
72573 次 |
| 最近记录: |