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
반응형
그리드형(광고전용)
'C# > WIN32' 카테고리의 다른 글
[C#/WIN32] SystemParametersInfo API 함수 선언하기 (0) | 2022.10.02 |
---|---|
[C#/WIN32] QueryPerformanceFrequency API 함수 선언하기 (0) | 2022.09.07 |
[C#/WIN32] QueryPerformanceCounter API 함수 선언하기 (0) | 2022.09.07 |
[C#/WIN32] GetSystemTime API 함수 선언하기 (0) | 2022.09.07 |
[C#/WIN32] SetSystemTime API 함수 선언하기 (0) | 2022.09.07 |
[C#/WIN32] SendARP API 함수 선언하기 (0) | 2022.07.28 |
[C#/WIN32] UrlCreateFromPath API 함수 선언하기 (0) | 2022.06.21 |
[C#/WIN32] GetStdHandle API 함수 선언하기 (0) | 2022.05.25 |
[C#/WIN32] TimeKillEvent API 함수 선언하기 (0) | 2022.05.25 |
[C#/WIN32] TimeSetEvent API 함수 선언하기 (0) | 2022.05.25 |
댓글을 달아 주세요