我想使用C#
,我使用的DNS類的方法來獲得這些我aspx
頁面上獲得主機的IP地址獲取ip地址。從主機名
它能正常工作本地,但是當我部署在IIS7的解決方案只返回由ISP分配的IP地址,但我想那臺機器的本地IP地址。
有什麼建議嗎?
我想使用C#
,我使用的DNS類的方法來獲得這些我aspx
頁面上獲得主機的IP地址獲取ip地址。從主機名
它能正常工作本地,但是當我部署在IIS7的解決方案只返回由ISP分配的IP地址,但我想那臺機器的本地IP地址。
有什麼建議嗎?
我相當有信心,你不能得到本地機器的本地192.168.C.D地址這樣的。
這是因爲安全性和可視性(NAT的等)。
如果您正在尋找唯一標識一個用戶。我會看看會話或cookie。
當在公共DNS查找IP地址,你會得到向外傳達的officiall IP地址。如果使用NAT,並且您希望內部地址必須連接到包含內部IP地址的DNS服務器。
您可以使用此方法...
public static String GetIP()
{
String ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if(string.IsNullOrEmpty(ip))
{
ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
return ip;
}
這是最接近你的解決方案,但它不能保證它能工作。中間路由器可以設置HTTP_X_FORWARDED_FOR變量中的任何IP。 – 2011-05-02 07:31:17
這是針對服務器機器ip的,我想要在局域網上獲得任何機器的ip。 – Ehtsham 2011-05-02 09:24:47
這將返回客戶端IP,你可以試試。 – 2011-05-02 09:25:52
以下是此例。 在這個例子中,我們可以得到我們給定主機名的IP地址。
string strHostName = "www.microsoft.com";
// Get DNS entry of specified host name
IPAddress[] addresses = Dns.GetHostEntry(strHostName).AddressList;
// The DNS entry may contains more than one IP addresses.
// Iterate them and display each along with the type of address (AddressFamily).
foreach (IPAddress address in addresses)
{
Response.Write(string.Format("{0} = {1} ({2})", strHostName, address, address.AddressFamily));
Response.Write("<br/><br/>");
}
請注意,版主和其他用戶正在刪除您的垃圾鏈接到您自己的網站中的答案。請停止包括他們,以避免對這些鏈接進行更嚴厲的制裁。 – 2012-11-05 14:47:27
本地IP地址是指機器有一個局域網一樣192.168.xxx.xxx – Ehtsham 2011-05-02 07:35:29
所以'HTTP_X_FORWARDED_FOR'穆罕默德阿赫塔爾建議是你最好的選擇地址。 – 2011-05-02 07:55:21