HttpListenerContext.Request.RemoteEndPoint Ipaddress行为

时间:2016-11-23 14:36:30

标签: c# .net amazon-ec2 httplistener httplistenerrequest

我在服务中有一段代码侦听端口,然后使用HttpListenerContext.Request.RemoteEndPoint

记录IP地址

我注意到,在一台机器上" A"当远程端点也在同一台机器A上时,HttpListenerContext.Request.RemoteEndPoint返回机器A的IP地址,即192.168.20.12

当同一条代码在另一台机器B上运行时,远程端点也在同一台机器B上,HttpListenerContext.Request.RemoteEndPoint返回127.0.0.1

有人知道为什么会有区别吗?

对于我的应用程序,我想拥有正确的IP地址(192.168.20.12)而不是环回地址。如何才能获得这些信息?

更多信息: 计算机A是运行Windows 7的物理桌面。计算机B是运行Windows Server 2012的EC2实例。

1 个答案:

答案 0 :(得分:1)

问题不在于HttpListenerContext.Request.RemoteEndPoint返回错误的 IP地址...问题是连接到端口的任何东西都连接到环回地址而你的监听器是正确报道。假设您确实希望使用侦听器来监视来自远程计算机的连接,这实际上是一个无关紧要的问题(因为您无法从远程计算机连接到环回地址)。同样,如果连接到您的端口的计算机有多个IP地址,您将无法选择HttpListenerContext.Request.RemoteEndPoint返回哪一个。它应该返回远程机器选择连接到服务器的任何IP地址。