ip.c
来自「用AVR单片机和RTL8019实现TCP/IP协议.支持ARP,PING,UDP」· C语言 代码 · 共 67 行
C
67 行
//**********************************
//*版本: Test 1.0
//*作者: XUGUOHONG
//*E-MAIL: KK20Y@YAHOO.COM.CN
//*WEBSITE:microdesign.000webhost.com
//**********************************
#include <rtl8019as.h>
#include <ip.h>
//**********************************
//* 系统 MAC地址设定(根据需要修正)
//**********************************
extern unsigned char SYSMAC[6];
//**********************************
//* 系统 IP地址设定(根据需要修正)
//**********************************
extern unsigned char SYSIP[4];
void ip(void);
unsigned int ip_cal_csum(void);
//************************************
// IP数据包分析
// 根据类型数值,执行不同的操作
// 1.icmp
// 2.tcp
// 3.udp
//************************************
void ip(void)
{
unsigned char temp;
temp=read_62256(IP_PRO_TYP); //读取IP数据包类型
if ( temp==0x01 )
{
icmp();
}
else if ( temp==0x06)
{
tcp();
}
else if ( temp==0x11)
{
udp();
}
else ;
}
//************************************
// IP数据包头CHECKSUM
//************************************
unsigned int ip_cal_csum(void)
{
unsigned char i;
unsigned long datah=0x00000000;
unsigned int data=0x0000;
for(i=0;i<20;i=i+2)
{
data=read_62256(IP_VER_LEN+i); // 高位数值xxxxabcd
datah= datah+(data<<8); // 形成数值xxxxabcdxxxx
datah=datah+read_62256(IP_VER_LEN+1+i); // 形成数值xxxxabcdefgh
}
data=datah+(datah>>16);
data=0XFFFF-data;
return data;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?