• 获得MAC地址的四个方法


    1.使用WMI。查询表Win32_NetworkAdapterConfiguration即可获得。

    2.使用ARP协议。请看这里

    3.使用Windows命令nbtstat,也就是通过NetBIOS。请看这里

    4.查询SNMP(就是一种用于监视网络设备的协议)的MIB(管理信息数据库)。但这不是一件简单的事情,需要自己创建SNMP包,发送到交换机,然后对返回的响应进行解析。

    下面是代碼:

    获得MAC地址的四个方法 - yjie - 双鱼using System;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Diagnostics;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Management;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Net;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Runtime.InteropServices;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Text.RegularExpressions;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼namespace MACAddress

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼    /**//// <summary>

    获得MAC地址的四个方法 - yjie - 双鱼    /// MainClass 的摘要描述。

    获得MAC地址的四个方法 - yjie - 双鱼    /// </summary>

    获得MAC地址的四个方法 - yjie - 双鱼    internal class MainClass

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼    获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        /**//// <summary>

    获得MAC地址的四个方法 - yjie - 双鱼        /// 應用程式的主進入點。

    获得MAC地址的四个方法 - yjie - 双鱼        /// </summary>

    获得MAC地址的四个方法 - yjie - 双鱼        [STAThread]

    获得MAC地址的四个方法 - yjie - 双鱼        private static void Main(string[] args)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            GetMACByWMI();

    获得MAC地址的四个方法 - yjie - 双鱼            IPAddress[] ips = GetLocalIP();

    获得MAC地址的四个方法 - yjie - 双鱼            foreach (IPAddress ip in ips)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                Console.WriteLine(GetMacByARP(ip.ToString()));

    获得MAC地址的四个方法 - yjie - 双鱼                string mac = GetRemoteMacByNetBIOS(ip.ToString());

    获得MAC地址的四个方法 - yjie - 双鱼                if ( mac.Length != 0 )

    获得MAC地址的四个方法 - yjie - 双鱼                    Console.WriteLine(mac);

    获得MAC地址的四个方法 - yjie - 双鱼                else

    获得MAC地址的四个方法 - yjie - 双鱼                    Console.WriteLine("Fail to get MACAddress by NetBIOS");

    获得MAC地址的四个方法 - yjie - 双鱼                GetMACBySNMP(ip.ToString(),"yourGroupName@yourVlanNumber");

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            Console.ReadLine();

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        By WMI#region By WMI

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        public static void GetMACByWMI()

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            string query = "select MACAddress from Win32_NetworkAdapterConfiguration where IPEnabled='TRUE'";

    获得MAC地址的四个方法 - yjie - 双鱼            ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);

    获得MAC地址的四个方法 - yjie - 双鱼            ManagementObjectCollection collection = searcher.Get();

    获得MAC地址的四个方法 - yjie - 双鱼            foreach (ManagementObject mo in collection)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                string mac = mo["MACAddress"].ToString();

    获得MAC地址的四个方法 - yjie - 双鱼                Console.WriteLine(" Network card MAC Address is :{0}", mac);

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        #endregion

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        By ARP#region By ARP

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        [DllImport("Iphlpapi.dll")]

    获得MAC地址的四个方法 - yjie - 双鱼        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        [DllImport("Ws2_32.dll")]

    获得MAC地址的四个方法 - yjie - 双鱼        private static extern Int32 inet_addr(string ip);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        public static string GetMacByARP(string clientIP)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            string ip = clientIP;

    获得MAC地址的四个方法 - yjie - 双鱼            Int32 ldest = inet_addr(ip);

    获得MAC地址的四个方法 - yjie - 双鱼            Int64 macinfo = new Int64();

    获得MAC地址的四个方法 - yjie - 双鱼            Int32 len = 6;

    获得MAC地址的四个方法 - yjie - 双鱼            try

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                SendARP(ldest, 0, ref macinfo, ref len);

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            catch

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                return "";

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            string originalMACAddress = Convert.ToString(macinfo, 16);

    获得MAC地址的四个方法 - yjie - 双鱼            if (originalMACAddress.Length < 12)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                originalMACAddress = originalMACAddress.PadLeft(12, '0');

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            string macAddress;

    获得MAC地址的四个方法 - yjie - 双鱼            if (originalMACAddress != "0000" && originalMACAddress.Length == 12)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                string mac1, mac2, mac3, mac4, mac5, mac6;

    获得MAC地址的四个方法 - yjie - 双鱼                mac1 = originalMACAddress.Substring(10, 2);

    获得MAC地址的四个方法 - yjie - 双鱼                mac2 = originalMACAddress.Substring(8, 2);

    获得MAC地址的四个方法 - yjie - 双鱼                mac3 = originalMACAddress.Substring(6, 2);

    获得MAC地址的四个方法 - yjie - 双鱼                mac4 = originalMACAddress.Substring(4, 2);

    获得MAC地址的四个方法 - yjie - 双鱼                mac5 = originalMACAddress.Substring(2, 2);

    获得MAC地址的四个方法 - yjie - 双鱼                mac6 = originalMACAddress.Substring(0, 2);

    获得MAC地址的四个方法 - yjie - 双鱼                macAddress = mac1 + "-" + mac2 + "-" + mac3 + "-" + mac4 + "-" + mac5 + "-" + mac6;

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            else

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                macAddress = "";

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            return macAddress.ToUpper();

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        public static IPAddress[] GetLocalIP()

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            string hostName = Dns.GetHostName();

    获得MAC地址的四个方法 - yjie - 双鱼            IPHostEntry ipEntry = Dns.GetHostByName(hostName);

    获得MAC地址的四个方法 - yjie - 双鱼            return ipEntry.AddressList;

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        #endregion

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        By NetBIOS#region By NetBIOS

    获得MAC地址的四个方法 - yjie - 双鱼        public static string GetRemoteMacByNetBIOS(string clientIP)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            string ip = clientIP;

    获得MAC地址的四个方法 - yjie - 双鱼            string dirResults = "";

    获得MAC地址的四个方法 - yjie - 双鱼            ProcessStartInfo psi = new ProcessStartInfo();

    获得MAC地址的四个方法 - yjie - 双鱼            Process proc = new Process();

    获得MAC地址的四个方法 - yjie - 双鱼            psi.FileName = "nbtstat.exe";

    获得MAC地址的四个方法 - yjie - 双鱼            //psi.RedirectStandardInput = false; 

    获得MAC地址的四个方法 - yjie - 双鱼            psi.RedirectStandardOutput = true;

    获得MAC地址的四个方法 - yjie - 双鱼            psi.RedirectStandardError = true;

    获得MAC地址的四个方法 - yjie - 双鱼            psi.Arguments = "-A " + ip;

    获得MAC地址的四个方法 - yjie - 双鱼            psi.UseShellExecute = false;

    获得MAC地址的四个方法 - yjie - 双鱼            proc = Process.Start(psi);

    获得MAC地址的四个方法 - yjie - 双鱼            dirResults = proc.StandardOutput.ReadToEnd();

    获得MAC地址的四个方法 - yjie - 双鱼            string error = proc.StandardError.ReadToEnd();

    获得MAC地址的四个方法 - yjie - 双鱼            proc.WaitForExit();

    获得MAC地址的四个方法 - yjie - 双鱼            dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");

    获得MAC地址的四个方法 - yjie - 双鱼            Regex reg = new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?((.)*?))__MAC", RegexOptions.IgnoreCase | RegexOptions.Compiled);

    获得MAC地址的四个方法 - yjie - 双鱼            Match mc = reg.Match(dirResults + "__MAC");

    获得MAC地址的四个方法 - yjie - 双鱼            if (mc.Success)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                return mc.Groups["key"].Value.ToUpper();

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            else

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                return "";

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼        #endregion

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        By SNMP#region By SNMP

    获得MAC地址的四个方法 - yjie - 双鱼        public static void GetMACBySNMP(string ip,string vlan)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            int commLength,mibLength,dataStart,dataLength;

    获得MAC地址的四个方法 - yjie - 双鱼            string nextMib,value;

    获得MAC地址的四个方法 - yjie - 双鱼            SNMP conn = new SNMP();

    获得MAC地址的四个方法 - yjie - 双鱼            string mib = "1.3.6.1.2.1.17.4.3.1.1";

    获得MAC地址的四个方法 - yjie - 双鱼            int orgMibLength = mib.Length;

    获得MAC地址的四个方法 - yjie - 双鱼            byte[] response = new byte[1024];

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            nextMib = mib;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            while ( true)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                response = conn.Get("getnext",ip,vlan,nextMib);

    获得MAC地址的四个方法 - yjie - 双鱼                commLength = Convert.ToInt16(response[6]);

    获得MAC地址的四个方法 - yjie - 双鱼                mibLength = Convert.ToInt16(response[23+commLength]);

    获得MAC地址的四个方法 - yjie - 双鱼                dataLength = Convert.ToInt16(response[25+commLength+mibLength]);

    获得MAC地址的四个方法 - yjie - 双鱼                dataStart = 26 + commLength + mibLength;

    获得MAC地址的四个方法 - yjie - 双鱼                value = BitConverter.ToString(response,dataStart,dataLength);

    获得MAC地址的四个方法 - yjie - 双鱼                nextMib = conn.GetNextMIB(response);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼                if ( !(nextMib.Substring(0,orgMibLength) == mib))

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼                获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                    break;

    获得MAC地址的四个方法 - yjie - 双鱼                }

    获得MAC地址的四个方法 - yjie - 双鱼                Console.WriteLine("{0}={1}",nextMib,value);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼        #endregion

    获得MAC地址的四个方法 - yjie - 双鱼    }

    获得MAC地址的四个方法 - yjie - 双鱼}

    SNMP Class

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼using System;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Net;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Net.Sockets;

    获得MAC地址的四个方法 - yjie - 双鱼using System.Text;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼namespace MACAddress

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼    /**//**//**//// <summary>

    获得MAC地址的四个方法 - yjie - 双鱼    /// SNMP 的摘要描述。

    获得MAC地址的四个方法 - yjie - 双鱼    /// </summary>

    获得MAC地址的四个方法 - yjie - 双鱼    public class SNMP

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼    获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼        public SNMP()

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        public byte[] Get(string request, string host, string community, string mibString)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            byte[] packet = new byte[1024];

    获得MAC地址的四个方法 - yjie - 双鱼            byte[] mib = new byte[1024];

    获得MAC地址的四个方法 - yjie - 双鱼            int snmpLen;

    获得MAC地址的四个方法 - yjie - 双鱼            int comLen = community.Length;

    获得MAC地址的四个方法 - yjie - 双鱼            string[] mibVals = mibString.Split('.');

    获得MAC地址的四个方法 - yjie - 双鱼            int mibLen = mibVals.Length;

    获得MAC地址的四个方法 - yjie - 双鱼            int cnt = 0;

    获得MAC地址的四个方法 - yjie - 双鱼            int temp;

    获得MAC地址的四个方法 - yjie - 双鱼            int orgmibLen = mibLen;

    获得MAC地址的四个方法 - yjie - 双鱼            int pos = 0;

    获得MAC地址的四个方法 - yjie - 双鱼            for (int i = 0; i < orgmibLen; i++)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                temp = Convert.ToInt16(mibVals[i]);

    获得MAC地址的四个方法 - yjie - 双鱼                if (temp > 127)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼                获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                    mib[cnt] = Convert.ToByte(128 + (temp / 128));

    获得MAC地址的四个方法 - yjie - 双鱼                    mib[cnt + 1] = Convert.ToByte(temp - ((temp / 128) * 128));

    获得MAC地址的四个方法 - yjie - 双鱼                    cnt += 2;

    获得MAC地址的四个方法 - yjie - 双鱼                    mibLen++;

    获得MAC地址的四个方法 - yjie - 双鱼                }

    获得MAC地址的四个方法 - yjie - 双鱼                else

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼                获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                    mib[cnt] = Convert.ToByte(temp);

    获得MAC地址的四个方法 - yjie - 双鱼                    cnt++;

    获得MAC地址的四个方法 - yjie - 双鱼                }

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            snmpLen = 29 + comLen + mibLen - 1;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x30;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = Convert.ToByte(snmpLen - 2);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x02;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x01;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x00;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x04;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = Convert.ToByte(comLen);

    获得MAC地址的四个方法 - yjie - 双鱼            byte[] data = Encoding.ASCII.GetBytes(community);

    获得MAC地址的四个方法 - yjie - 双鱼            for (int i = 0; i < data.Length; i++)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                packet[pos++] = data[i];

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            if (request == "get")

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                packet[pos++] = 0xA0;

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            else

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                packet[pos++] = 0xA1;

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = Convert.ToByte(20 + mibLen - 1);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x02;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x04;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x00;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x00;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x00;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x01;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x02;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x01;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x00;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x02;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x01;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x00;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x30;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = Convert.ToByte(6 + mibLen - 1);

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x30;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = Convert.ToByte(6 + mibLen - 1 - 2);

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x06;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = Convert.ToByte(mibLen - 1);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x2b;

    获得MAC地址的四个方法 - yjie - 双鱼            for (int i = 2; i < mibLen; i++)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                packet[pos++] = Convert.ToByte(mib[i]);

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x05;

    获得MAC地址的四个方法 - yjie - 双鱼            packet[pos++] = 0x00;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    获得MAC地址的四个方法 - yjie - 双鱼            sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000);

    获得MAC地址的四个方法 - yjie - 双鱼            IPHostEntry ihe = Dns.Resolve(host);

    获得MAC地址的四个方法 - yjie - 双鱼            IPEndPoint iep = new IPEndPoint(ihe.AddressList[0], 161);

    获得MAC地址的四个方法 - yjie - 双鱼            EndPoint ep = (EndPoint) iep;

    获得MAC地址的四个方法 - yjie - 双鱼            sock.SendTo(packet, snmpLen, SocketFlags.None, iep);

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            try

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                int recv = sock.ReceiveFrom(packet, ref ep);

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            catch (SocketException)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                packet[0] = 0xff;

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            return packet;

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼        public string GetNextMIB(byte[] mibIn)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼        获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼            string output = "1.3";

    获得MAC地址的四个方法 - yjie - 双鱼            int commLength = mibIn[6];

    获得MAC地址的四个方法 - yjie - 双鱼            int mibStart = 6 + commLength + 17;

    获得MAC地址的四个方法 - yjie - 双鱼            int mibLength = mibIn[mibStart] - 1;

    获得MAC地址的四个方法 - yjie - 双鱼            mibStart += 2;

    获得MAC地址的四个方法 - yjie - 双鱼            int mibValue;

    获得MAC地址的四个方法 - yjie - 双鱼

    获得MAC地址的四个方法 - yjie - 双鱼            for (int i = mibStart; i < mibStart + mibLength; i++)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼            获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                mibValue = Convert.ToInt16(mibIn[i]);

    获得MAC地址的四个方法 - yjie - 双鱼                if (mibValue > 128)

    获得MAC地址的四个方法 - yjie - 双鱼获得MAC地址的四个方法 - yjie - 双鱼                获得MAC地址的四个方法 - yjie - 双鱼{

    获得MAC地址的四个方法 - yjie - 双鱼                    mibValue = (mibValue / 128) * 128 + Convert.ToInt16(mibIn[i + 1]);

    获得MAC地址的四个方法 - yjie - 双鱼                    i++;

    获得MAC地址的四个方法 - yjie - 双鱼                }

    获得MAC地址的四个方法 - yjie - 双鱼                output += "." + mibValue;

    获得MAC地址的四个方法 - yjie - 双鱼            }

    获得MAC地址的四个方法 - yjie - 双鱼            return output;

    获得MAC地址的四个方法 - yjie - 双鱼        }

    获得MAC地址的四个方法 - yjie - 双鱼    }

    获得MAC地址的四个方法 - yjie - 双鱼}

     如果还有其它方法,请告诉我。

  • 相关阅读:
    记2008年7月25日午后 心情
    [多媒体]词典编码
    [多媒体]算术编码、游程编码
    [多媒体]数据压缩的类型
    [多媒体]理解PCM、DPCM、APCM、ADPCM
    C++异常处理
    [转]linux上SVN解决冲突的办法
    从海量数据查找有或者没有出现的数据
    八数码问题
    [转]linux中强大的screen命令
  • 原文地址:https://www.cnblogs.com/luluping/p/1713577.html
Copyright © 2020-2023  润新知