?? net_ping.c
字號:
#include "stdio.h"
#include "alt_types.h"
void Revert_Ping(void) //回復Ping數據包
{
UINT i,Data_Len,Data_SUM,Len;
//開始拼接Ping的回復數據包開始
HEAD_Ethernet(); //以太網頭
HEAD_IP(); //IP首部
Len=Start_ICMP;
//ICMP首部
Data_Len=Receive_Buffer[14+2]*256+Receive_Buffer[14+2+1]-20; //ICMP包的長度
Send_Buffer[Len++]=0; //回顯應答(Ping應答)
Send_Buffer[Len++]=0;
Send_Buffer[Len++]=0; //校驗和
Send_Buffer[Len++]=0;
for (i=0;i<4;i++)
Send_Buffer[Len++]=Receive_Buffer[Len]; //表示符和序號
for (i=0;i<Data_Len-8;i++)
Send_Buffer[Len++]=Receive_Buffer[Len]; //選項數據
//計算校驗和
Data_SUM=CHECK_SUM(Send_Buffer,14+20,Data_Len); //ICMP首部校驗和
Send_Buffer[14+20+2]=Data_SUM/0x100;
Send_Buffer[14+20+3]=Data_SUM&0xff;
//拼接數據包結束
NET_Send_Packet(Send_Buffer,Len); //發送數據包
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -