2009-12-17 307 views
3

我正在尝试查找在C#中响应我的WebRequest的IP地址(而不是主机名)。我不想执行DNS解析,因为它们是返回的DNS记录不是响应请求的服务器的情况。对于前:如何获取响应WebResponse的服务器的IP地址C#

客户端 - >负载均衡器 - > Web服务器

DNS服务器将与负载均衡器的IP回应。假设响应的Web服务器不会通过负载均衡器返回,则IP地址将成为我正在尝试查找的实际Web服务器。

+0

你为什么要这么做?例如,如果服务器有多个IP地址a,你会做什么? – 2009-12-29 06:07:48

回答

1

你有访问服务器端代码吗?或者到Web服务器配置?您可以将机器IP或任何标识符放在自定义标题中,然后在客户端上查找。

至于你的原始问题,我不相信HttpWebRequest/HttpWebResponse类的任何地方暴露的信息。

+0

不幸的是,我不这样做,否则这将是一个不错的选择。 – Traderde 2009-12-17 09:51:06

1

我认为你必须去OSI蘸,并创建和利用自己的套接字;
那么你就必须像这样访问RemoteEndPoint财产(至少在您的套接字连接,或者被连接到):

Socket sprocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sprocket.Connect("www.google.com", 80);
string IPAddressOfRespondingServer = ((IPEndPoint)sprocket.RemoteEndPoint).Address.ToString();

+0

这将是连接另一端的IP地址,不一定是对请求的响应的IP地址 - 它们可能与代理服务器或涉及的负载均衡器不同。 – 2009-12-29 06:06:46

+0

我想你是对的....呃......我想我会站在你的,先生们的旁边,那就是对这个问题的评论;为什么呢? 有兴趣看看它是如何完成的。 是否有一种通过讨论的方式获得IP的防弹方法,它不需要“调整”数据包或连接两端的内容? – 2009-12-29 18:00:24