첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ SendARP API 함수를 사용해 MAC 주소를 구하는 방법을 보여준다.

 

▶ SendARP API 함수 : MAC 주소 구하기 예제 (C#)

using System;

string macAddress = GetMACAddress("192.168.15.210");

Console.WriteLine(macAddress);

 

▶ SendARP API 함수 : MAC 주소 구하기 (C#)

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
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요