2009-12-17 308 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