net_ping.c

来自「本程序功能为在FPGA上nios处理器的网卡接口程序。」· C语言 代码 · 共 36 行

C
36
字号
#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 + =
减小字号Ctrl + -
显示快捷键?