এখানে কিছু সি # কোড যা প্রথম অপারেশনাল নেটওয়ার্ক ইন্টারফেসের ম্যাক ঠিকানা প্রদান করে। ধরে নিই যে NetworkInterface
অ্যাসেম্বলিটি অন্যান্য অপারেটিং সিস্টেমে ব্যবহৃত রানটাইম (অর্থাৎ মনো) এ প্রয়োগ করা হয় তবে এটি অন্যান্য অপারেটিং সিস্টেমে কাজ করবে।
নতুন সংস্করণ: দ্রুত গতিতে NIC ফেরত দেয় যার বৈধ ম্যাক ঠিকানাও রয়েছে।
/// <summary>
/// Finds the MAC address of the NIC with maximum speed.
/// </summary>
/// <returns>The MAC address.</returns>
private string GetMacAddress()
{
const int MIN_MAC_ADDR_LENGTH = 12;
string macAddress = string.Empty;
long maxSpeed = -1;
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
log.Debug(
"Found MAC Address: " + nic.GetPhysicalAddress() +
" Type: " + nic.NetworkInterfaceType);
string tempMac = nic.GetPhysicalAddress().ToString();
if (nic.Speed > maxSpeed &&
!string.IsNullOrEmpty(tempMac) &&
tempMac.Length >= MIN_MAC_ADDR_LENGTH)
{
log.Debug("New Max Speed = " + nic.Speed + ", MAC: " + tempMac);
maxSpeed = nic.Speed;
macAddress = tempMac;
}
}
return macAddress;
}
আসল সংস্করণ: সবেমাত্র প্রথমটি প্রদান করে।
/// <summary>
/// Finds the MAC address of the first operation NIC found.
/// </summary>
/// <returns>The MAC address.</returns>
private string GetMacAddress()
{
string macAddresses = string.Empty;
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
if (nic.OperationalStatus == OperationalStatus.Up)
{
macAddresses += nic.GetPhysicalAddress().ToString();
break;
}
}
return macAddresses;
}
এই পদ্ধতির বিষয়ে আমি কেবল পছন্দ করতে পারি না যদি আপনি কোনও নরটেল প্যাকেট মিনিপোর্ট বা কোনও ধরণের ভিপিএন সংযোগ পছন্দ করেন তবে এটির নির্বাচনের সম্ভাবনা রয়েছে। আমি যতদূর বলতে পারি, প্রকৃত শারীরিক ডিভাইসের ম্যাককে কোনও ধরণের ভার্চুয়াল নেটওয়ার্ক ইন্টারফেস থেকে আলাদা করার কোনও উপায় নেই।