?? net_arp.c
字號(hào):
void IP_ARP(void) //ARP數(shù)據(jù)處理
{
UINT i,Len;
for (i=0;i<6;i++)
MAC_O_Addr[i]=Receive_Buffer[i+6]; //保存外部MAC地址
for (i=0;i<4;i++)
IP_O_Addr[i]=Receive_Buffer[i+22+6]; //保存外部IP地址
printf("外部MAC地址 ");
for(i=0;i<6;i++)
printf("%2x ",MAC_O_Addr[i]);
printf("\n");
printf("外部ip地址 ");
for(i=0;i<4;i++)
printf("%d.",IP_O_Addr[i]);
printf("\n\n");
//開始拼接ARP返回包
HEAD_Ethernet(); //以太網(wǎng)頭
Len=Start_ARP;
Send_Buffer[Len++]=0x00; //硬件類型,0x0001 MAC地址
Send_Buffer[Len++]=0x01;
Send_Buffer[Len++]=0x08; //協(xié)議類型,0x0800 IP地址
Send_Buffer[Len++]=0x00;
Send_Buffer[Len++]=6; //硬件地址長度,6 MAC地址占用字節(jié)數(shù)
Send_Buffer[Len++]=4; //協(xié)議地址長度,4 IP地址占用字節(jié)數(shù)
Send_Buffer[Len++]=0; //OP(操作類型),2 ARP應(yīng)答
Send_Buffer[Len++]=2;
for (i=0;i<6;i++)
Send_Buffer[Len++]=MAC_Addr[i]; //本地MAC地址
for (i=0;i<4;i++)
Send_Buffer[Len++]=IP_Addr[i]; //本地IP地址
for (i=0;i<6;i++)
Send_Buffer[Len++]=MAC_O_Addr[i]; //外部MAC地址
for (i=0;i<4;i++)
Send_Buffer[Len++]=IP_O_Addr[i]; //外部IP地址
while(Len<64)
Send_Buffer[Len++]=0x00; //小于64字節(jié)的部分用0填充
NET_Send_Packet(Send_Buffer,Len); //發(fā)送數(shù)據(jù)包
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -