📄 ip.h
字号:
/*************************************************************************************/
#ifndef IP_H_
#define IP_H_
#include "main.h"
/* IP格式 */
#define UWORK8 unsigned char /* 无符号字符,8位,范围-128~127 */
#define WORK8 signed char /* 有符号字符,8位,范围0~255 */
#define UWORK16 unsigned short /* 无符号16位短整型,范围0~65535 */
#define WORK16 signed short /* 有符号16位短整型,范围-32768~32767 */
#define UWORK32 unsigned long /* 无符号32位长整型,范围0~4294967295 */
#define WORK32 signed long /* 有符号32位长整型,范围-2147483648~2147483647 */
#define FWORK32 float /* 浮点数,范围±1.175494E-38 ~ ±3.402823E+38*/
#define IP_type 0x0800
#define ARP_type 0x0806
#define ICMP 1
#define IGMP 2
#define TCP 6
#define UDP 17
#define MORE_FRAGMENT 0x2000
#define NOD_ID_LENGTH 6 /* MAC地址长度 */
#define PACKET_LENGTH 1510 /* 数据长度,留出一些余量在计算校验和时防止数组越界 */
#define ETHER_HEAD_LEN 14 /* 以太网头 */
#define SEGMENT_DATA 2000 /* 分片数据缓冲大小 */
#define NET_SEND_BUFF 1510 /* 发送缓冲大小 */
#define IP_LEN 4
#define MAC_LEN 6
#define REMOTE_IP_NUM 1 /* 远程IP地址数目 */
#define IP_HEAD_LEN 20 //IP头的长度
typedef struct
{
UWORK8 ucVerAndLen; /* 版本号和长度,各占4位 */
UWORK8 ucDs; /* 区分服务 */
UWORK16 usTotalLen; /* 总长度 */
UWORK16 usID; /* 标识 */
UWORK16 usSegOffset; /* 分片偏移 */
UWORK8 ucTTL; /* 生存时间 */
UWORK8 ucprotocol; /* 协议 */
UWORK16 usCheckSum; /* 校验和 */
UWORK8 ucSourceIP[IP_LEN]; /* 源IP地址 */
UWORK8 ucDestIP[IP_LEN]; /* 目的IP地址 */
}ST_IP_HEAD_FORMAT;
extern xdata ST_IP_HEAD_FORMAT gstIphead;
extern xdata UWORK8 IPLocalAddress_buf[IP_LEN]; /* 源IP地址 */
extern xdata UWORK8 SubNetMask_buf[IP_LEN]; /* 子网掩码 */
extern xdata UWORK8 GateWay_buf[IP_LEN]; /* 网关 */
extern xdata UWORK8 IPSourceddress_buf[IP_LEN]; //源IP地址
extern xdata UWORK8 IPDestAddress_buf[IP_LEN]; /* 目标IP地址 */
extern UWORK16 SourcePort; //源端口号
extern UWORK16 DesPort; //目标端口号
extern void IpOrRouter(void);
extern void IpSend(void);
extern void IpReceive(void);
extern UWORK16 CheckSum(UWORK16 *pusPointer,UWORK16 usDataLen);
extern void IpOrRouter(void);
extern void IpReceive(void);
extern void IpSend(void);
extern void RcvEthernetData(void);
extern UWORK8 RevEthernetPacket(void);
extern void SendDiagnoseData(void);
extern UWORK8 SendEthernetPacket(UWORK16 usEthDataSendLen);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -