আমি জানি এটি মৃত ঘোড়াটিকে লাথি মারছে, তবে সম্ভবত এটি কাউকে সহায়তা করতে পারে। আমি আমার স্থানীয় আইপি ঠিকানা সন্ধানের জন্য সমস্ত জায়গার দিকে তাকিয়েছি, তবে যেখানেই আমি এটি ব্যবহার করতে বলছি:
Dns.GetHostEntry(Dns.GetHostName());
আমি এটি মোটেও পছন্দ করি না কারণ এটি কেবল আপনার কম্পিউটারে নির্ধারিত সমস্ত ঠিকানা পায়। আপনার যদি একাধিক নেটওয়ার্ক ইন্টারফেস থাকে (যা বেশিরভাগ কম্পিউটারই এখন-এক-দিন করে)) আপনার কোন ধারণা নেই কোন ঠিকানাটি কোন নেটওয়ার্ক ইন্টারফেসের সাথে চলে। একগুচ্ছ গবেষণা করার পরে আমি নেটওয়ার্কআইন্টারফেস ক্লাসটি ব্যবহার করার জন্য একটি ফাংশন তৈরি করেছি এবং এর মধ্যে তথ্যটি ঝাঁকিয়েছি। এই উপায়টি আমি বলতে পারি এটি কী ধরণের ইন্টারফেস, (ইথারনেট, ওয়্যারলেস, লুপব্যাক, টানেল ইত্যাদি), এটি সক্রিয় রয়েছে কি না, এবং আরও অনেক কিছু OO
public string GetLocalIPv4(NetworkInterfaceType _type)
{
string output = "";
foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
{
if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up)
{
foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
{
output = ip.Address.ToString();
}
}
}
}
return output;
}
এখন আপনার ইথারনেট নেটওয়ার্ক ইন্টারফেস কলের IPv4 ঠিকানা পেতে:
GetLocalIPv4(NetworkInterfaceType.Ethernet);
বা আপনার ওয়্যারলেস ইন্টারফেস:
GetLocalIPv4(NetworkInterfaceType.Wireless80211);
যদি আপনি একটি ওয়্যারলেস ইন্টারফেসের জন্য আইপিভি 4 ঠিকানা পাওয়ার চেষ্টা করেন তবে আপনার কম্পিউটারে একটি ওয়্যারলেস কার্ড ইনস্টল করা নেই এটি কেবল একটি খালি স্ট্রিং ফিরিয়ে দেবে। ইথারনেট ইন্টারফেসের সাথে একই জিনিস।
আশা করি এটি কাউকে সাহায্য করবে! :-)
সম্পাদনা করুন:
এটি চিহ্নিত করা হয়েছিল (ধন্যবাদ @ নাসবানোভ) যদিও এই ফাংশনটি আইপি অ্যাড্রেসটি ব্যবহার Dns.GetHostEntry(Dns.GetHostName())
করার চেয়ে অনেক ভাল উপায়ে বের করার বিষয়ে যায় তবে এটি একই ধরণের একাধিক ইন্টারফেস বা একাধিক আইপি অ্যাড্রেসকে একক ইন্টারফেসে সমর্থন করে না very । যখন কেবল একাধিক ঠিকানা বরাদ্দ থাকতে পারে তবে এটি কেবলমাত্র একক আইপি ঠিকানা প্রদান করবে। এই নির্ধারিত সমস্ত ঠিকানাগুলিতে ফিরে আসার জন্য আপনি কেবলমাত্র একটি একক স্ট্রিংয়ের পরিবর্তে একটি অ্যারে ফেরত দিতে মূল ফাংশনটি পরিচালনা করতে পারেন। উদাহরণ স্বরূপ:
public static string[] GetAllLocalIPv4(NetworkInterfaceType _type)
{
List<string> ipAddrList = new List<string>();
foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
{
if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up)
{
foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
{
ipAddrList.Add(ip.Address.ToString());
}
}
}
}
return ipAddrList.ToArray();
}
এখন এই ফাংশনটি একটি নির্দিষ্ট ইন্টারফেস ধরণের জন্য সমস্ত নির্ধারিত ঠিকানা ফেরত দেবে। এখন কেবল একটি একক স্ট্রিং পেতে আপনি .FirstOrDefault()
এক্সটেনশানটি অ্যারেতে প্রথম আইটেমটি ফেরত দিতে বা এটি খালি থাকলে খালি স্ট্রিংটি ফিরে আসতে পারেন।
GetLocalIPv4(NetworkInterfaceType.Ethernet).FirstOrDefault();
If I am not connected to a network and I am connected to the internet
এই বিবৃতিটি পরস্পরবিরোধী বলে মনে হচ্ছে। আপনার কম্পিউটারটি কোনও প্রাইভেট ল্যান বা ইন্টারনেটের সাথে সংযুক্ত আছে কিনা তা বোঝার চেষ্টা করছেন?