2009-03-14 16 views
26

मैं अपने एएसपी.NET पृष्ठ को कॉल करने वाले सर्वर का आईपी पता कैसे प्राप्त करूं? मैंने एक प्रतिक्रिया वस्तु के बारे में सामान देखा है, लेकिन सी # पर बहुत नया हूँ। अनेक अनेक धन्यवाद।एएसपी.नेट में सर्वर का आईपी पता प्राप्त करना?

उत्तर

47

यह काम करना चाहिए:

//this gets the ip address of the server pc 

    public string GetIPAddress() 
    { 
    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); // `Dns.Resolve()` method is deprecated. 
    IPAddress ipAddress = ipHostInfo.AddressList[0]; 

    return ipAddress.ToString(); 
    } 

http://wec-library.blogspot.com/2008/03/gets-ip-address-of-server-pc-using-c.html

या

//while this gets the ip address of the visitor making the call 
    HttpContext.Current.Request.UserHostAddress; 

http://www.geekpedia.com/KB32_How-do-I-get-the-visitors-IP-address.html

+4

वे दो कोड ब्लॉक पूरी तरह से अलग-अलग चीजें करते हैं। – Martin

+0

क्या अंतर है? – jergason

+6

शीर्ष कोड ब्लॉक उस सर्वर का आईपी पता प्राप्त करता है जिस पर कोड चल रहा है। निचला कोड ब्लॉक आगंतुक का आईपी पता प्राप्त करता है जो अनुरोध करता है। – Martin

10

ऊपर धीमी है के रूप में यह एक DNS कॉल की आवश्यकता है (और जाहिर है, अगर काम नहीं करेगा एक उपलब्ध नहीं है)।

public static Dictionary<IPAddress, IPAddress> GetAllNetworkInterfaceIpv4Addresses() 
{ 
    var map = new Dictionary<IPAddress, IPAddress>(); 

    foreach (var ni in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
     foreach (var uipi in ni.GetIPProperties().UnicastAddresses) 
     { 
      if (uipi.Address.AddressFamily != AddressFamily.InterNetwork) continue; 

      if (uipi.IPv4Mask == null) continue; //ignore 127.0.0.1 
      map[uipi.Address] = uipi.IPv4Mask; 
     } 
    } 
    return map; 
} 

चेतावनी: इस मोनो में लागू नहीं है अभी तक

+0

और ... इस कोड के साथ ... आप कैसे जांचते हैं कि साइट कौन सा सर्वर चला रही है? मुझे लगता है ... मेरे पास एक उत्पादन और प्रतिकृति सर्वर है, मैं सर्वर को जांचने के लिए आईपी या आईपीएस कैसे स्टोर करूं? –

+0

मुझे लगता है कि यह जवाब सही दिशा में आगे बढ़ रहा है। सर्वर में कई नेटवर्क एडेप्टर हो सकते हैं, और अकेले होस्ट नाम सर्वर सेटअप के आधार पर आपको गलत जानकारी दे सकता है। अन्य उत्तर कुछ परिस्थितियों में काम कर सकते हैं और काम करेंगे, लेकिन यह वह उत्तर है जो आपको अपने पर्यावरण को बेहतर सोचने और समझने में मदद करता है। – Nick

6
//this gets the ip address of the server pc 
    public string GetIPAddress() 
    { 
    string strHostName = System.Net.Dns.GetHostName(); 
    //IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); <-- Obsolete 
    IPHostEntry ipHostInfo = Dns.GetHostEntry(strHostName); 
    IPAddress ipAddress = ipHostInfo.AddressList[0]; 

    return ipAddress.ToString(); 
    } 
26

Request.ServerVariables["LOCAL_ADDR"];

आप उनकी संगत सबनेट मास्क के साथ वर्तमान पीसी के स्थानीय IPv4 पतों का एक नक्शा प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग कर सकते

यह आईपी को बहु-गृह सर्वर के लिए अनुरोध आया है

+2

यह भी सबसे कुशल और स्थिर विधि है। यदि आप '' 'System.Net का उपयोग कर रहे हैं।डीएनएस 'आप इसे गलत कर रहे हैं। –

+0

अधिक विशेष रूप से: System.Web.HttpContext.Current.Request.ServerVariables ["LOCAL_ADDR"]; –

1

यह आईपीवी के लिए काम करेगा 4:

public static string GetServerIP() 
{    
    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); 

    foreach (IPAddress address in ipHostInfo.AddressList) 
    { 
     if (address.AddressFamily == AddressFamily.InterNetwork) 
      return address.ToString(); 
    } 

    return string.Empty; 
} 
संबंधित मुद्दे