मेरे पास मेरी मशीन पर वर्चुअलबॉक्स वीएम स्थापित है और इस तरह एक ईथरनेट एडाप्टर है जो इसके लिए दिखाई देता है। मैं अपने मशीन का IP पता की सूची के माध्यम गणना कर रहा हूँ निम्नलिखित के माध्यम से:सी # - मेरी मशीन का स्थानीय आईपी पता ढूँढना और वीएम के
public string GetLocalIpAddress()
{
try
{
string strHostName = Dns.GetHostName();
// Then using host name, get the IP address list..
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
foreach (IPAddress ip in ipEntry.AddressList)
{
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
return string.Format("({0})", ip.ToString());
}
}
}
catch(Exception e)
{
Global.ApplicationLog.AddApplicationLog(EnumAppEventTypes.SYSTEM_ERROR, e.ToString());
}
return "";
}
मेरे समस्या यह है कि आभासी मशीन के ईथरनेट एडाप्टर भी शर्त पर फैल जाती है है:
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
वहाँ का एक तरीका है मेरी मशीन के स्थानीय आईपी पते को चुनना और मेरी वर्चुअल मशीन को अनदेखा करना?
दुर्भाग्यवश आईपीएड्रेस क्लास ईथरनेट एडाप्टर का नाम नहीं रखता है, इसलिए मैं उस विधि के साथ वीएम ईथरनेट एडाप्टर को खत्म नहीं कर सकता। – n00b
हां, आपको NetworkInterface.GetAllNetworkInterfaces() विधि का उपयोग कर अपना दृष्टिकोण बदलना पड़ सकता है। यह सभी इंटरफेस वापस कर देगा, और फिर आप प्रत्येक इंटरफ़ेस के लिए सभी उपलब्ध आईपी पते के माध्यम से गणना कर सकते हैं। – pennanth
हाय पेनैंथ, मुझे कोई सदस्य चर नहीं मिल रहा है जो नेटवर्क इंटरफेस क्लास के अंदर आईपी पता दिखाता है। अगर मैं गलत हूं लेकिन नेटवर्क इंटरफेस क्लास के नाम का उपयोग करके भी मुझे सही कर दूं तो आप ईथरनेट एडाप्टर नामों का नाम बदलकर इसे तोड़ सकते हैं? मैं – n00b