안드로이드 장치가 C#의 간단한 ARP 요청 (내 랩톱에서 ARP를 C#으로 안드로이드 장치로 보내는 중)을 사용하여 라우터라고 생각하게하려고합니다. 나는 내가, it'l 일 (Iphlpapi.dll에서) SendArp 방법을 사용 있을지 생각 :.C#의 ARP 요청
SendArp(ConvertIPToInt32(IPAddress.Parse("myAndroidIP")),
ConvertIPToInt32(IPAddress.Parse("192.168.1.1")), macAddr, ref macAddrLen)
을하지만 요청을 보낼 수 없습니다 * 그러나, 나는 쓸 것이다 경우 '0' 대신 ConvertIPToInt32(IPAddress.Parse("192.168.1.1"))
의 :
SendArp(ConvertIPToInt32(IPAddress.Parse("myAndroidIP")), 0,
macAddr, ref macAddrLen)
그것은 작동합니다
그래서 소스 IP가 '0'인 경우, 그것은 노력하고 있지만, 소스는 라우터의 IP A는 경우 ddress, 그 NOT.
나는 ARP를 보내려면이의 PInvoke 방법을 사용하고 있습니다 :
[System.Runtime.InteropServices.DllImport("Iphlpapi.dll", EntryPoint = "SendARP")]
internal extern static Int32 SendArp(Int32 destIpAddress, Int32 srcIpAddress,
byte[] macAddress, ref Int32 macAddressLength);
그리고이 방법을 INT32에 문자열을 IP로 변환하기 :
private static Int32 ConvertIPToInt32(IPAddress pIPAddr)
{
byte[] lByteAddress = pIPAddr.GetAddressBytes();
return BitConverter.ToInt32(lByteAddress, 0);
}
감사합니다.
1 단계는 오류 검사를 추가하는 것입니다. 'SendARP'는 당신이 무시하는 반환 값을 가지고 있습니다. 그러지 마. 반환되는 값을 알려주십시오. –