⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icmp.c

📁 RTL8019AS以太网控制器以寄存器(16K的RAM)为核心
💻 C
字号:
/*********************************************************************
 *文件名称:	icmp.c
 *文件标识: 
 *摘    要: 测试主机的可达性,其中主要的操作是ping
 *
 *********************************************************************/
#define  ICMP_GLOBALS
#include "net_cfg.h"

/**********************************************************************
**函数原型:	void        Ping_Request( )
**入口参数:	无
**出口参数:	无
**返 回 值:	无
**说    明:	发送PING请求报文,测试对方主机的可达性
************************************************************************/
void Ping_Request()
{
    TxdNetBuff.EtherFrame.DestMacId[0]=Ping_MAC.words[0];  	//填充以太网协议目的物理地址字段
    TxdNetBuff.EtherFrame.DestMacId[1]=Ping_MAC.words[1];  
    TxdNetBuff.EtherFrame.DestMacId[2]=Ping_MAC.words[2];  
   	TxdNetBuff.EtherFrame.NextProtocal=0x0800;              //以太网协议的下层协议为IP协议
	TxdNetBuff.IpFrame.VerandIphLen=0x45;                   //IP版本和首部长度各占VerandIphLen字段的4位,版本4,占用高4位
															//首部长度5*4=20,单位字节
	TxdNetBuff.IpFrame.ServerType=0x00;                     //服务类型,默认为0
	TxdNetBuff.IpFrame.TotalLen=60;                         //IP数据报总长度40字节,其中由总长度
															//减去首部长度即可得数据报长度
    TxdNetBuff.IpFrame.ttl=0x80;                            //IP生存时间
	TxdNetBuff.IpFrame.FrameIndex=FrameIndex;               //帧序号
	FrameIndex++;                                           //
	TxdNetBuff.IpFrame.Segment=0x0000;                      //标志及段偏移都为0
	TxdNetBuff.IpFrame.NextProtocal=0x0001;                 //IP的下层协议为ICMP协议:TCP 
    TxdNetBuff.IpFrame.Crc=0;                                           
    TxdNetBuff.IpFrame.DestId[0]=Ping_Ip_Address.words[0];  //填充目的IP地址
    TxdNetBuff.IpFrame.DestId[1]=Ping_Ip_Address.words[1];
    TxdNetBuff.IpFrame.SourceIp[0]=My_Ip_Address.words[0];  //填充源IP地址
    TxdNetBuff.IpFrame.SourceIp[1]=My_Ip_Address.words[1];
    TxdNetBuff.IpFrame.Crc=CreateIpHeadCrc();               //产生IP数据报首部检验和,CreateIpHeadCrc()在global.c中定义
    TxdNetBuff.IcmpFrame.type=0x08;                         //表示该ICMP数据帧为PING请求                  
    TxdNetBuff.IcmpFrame.Crc=0;                                         
	TxdNetBuff.IcmpFrame.id=0x0300;                         //标识符
	TxdNetBuff.IcmpFrame.seq=FrameIndex;                    //ICMP报文序号
    TxdNetBuff.IcmpFrame.Crc=CreateIcmpCrc();               //产生ICMP报文的校验和,CreatIcmpCrc()在global.c中定义
    Send_Packet(&TxdNetBuff,74);                            //发送数据包
}
//==========================================================
/**********************************************************************
**函数原型:  	void        Ping_Answer( )
**入口参数:		无
**入口参数:		无
**返 回 值:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -