■ SendARP API 함수를 사용해 MAC 주소를 구하는 방법을 보여준다.
▶ SendARP API 함수 : MAC 주소 구하기 예제 (C#)
1 2 3 4 5 6 7 |
using System; string macAddress = GetMACAddress("192.168.15.210"); Console.WriteLine(macAddress); |
▶ SendARP API 함수 : MAC 주소 구하기 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
using System; using System.Net; using System.Runtime.InteropServices; #region ARP 보내기 - SendARP(targetIP, sourceIP, macAddressByteArray, macAddressByteArrayLength) /// <summary> /// ARP 보내기 /// </summary> /// <param name="targetIP">타겟 IP</param> /// <param name="sourceIP">소스 IP</param> /// <param name="macAddressByteArray">MAC 주소 바이트 배열</param> /// <param name="macAddressByteArrayLength">MAC 주소 바이트 배열 길이</param> /// <returns>처리 결과</returns> [DllImport("iphlpapi", ExactSpelling = true)] private static extern int SendARP(int targetIP, int sourceIP, byte[] macAddressByteArray, ref uint macAddressByteArrayLength); #endregion #region MAC 주소 구하기 - GetMACAddress(ipAddressString) /// <summary> /// MAC 주소 구하기 /// </summary> /// <param name="ipAddressString">IP 주소 문자열</param> /// <returns>MAC 주소</returns> public string GetMACAddress(string ipAddressString) { IPAddress ipAddress = IPAddress.Parse(ipAddressString); byte[] macAddressByteArray = new byte[6]; uint macAddressByteArrayLength = (uint)macAddressByteArray.Length; if(SendARP((int)ipAddress.Address, 0, macAddressByteArray, ref macAddressByteArrayLength) != 0) { throw new Exception("ARP command failed"); } string[] stringArray = new string[(int)macAddressByteArrayLength]; for(int i = 0; i < macAddressByteArrayLength; i++) { stringArray[i] = macAddressByteArray[i].ToString("X2"); } return string.Join(":", stringArray); } #endregion |