?? icmp.c
字號:
/*********************************************************************
* Copright(c) 2003,廣州周立功單片機發展有限公司
* All rights reserved.
*
*文件名稱: icmp.c
*文件標識:
*摘 要: 測試主機的可達性,其中主要的操作是ping
*
*當前版本: V1.0
*完成日期: 2003.2.27
*
*
*********************************************************************/
#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 + -