📄 struct.h
字号:
union u {
unsigned int word;
struct{unsigned char high;unsigned char low;}bytes;
};
union v {
unsigned int word;
struct{unsigned char low;unsigned char high;}bytes; /* 发送顺序为低位在前,高位在后 8019网卡的长度*/
};
union w {
unsigned long dwords;
struct {unsigned int high;unsigned int low;}words;
struct
{
unsigned char byte3;
unsigned char byte2;
unsigned char byte1;
unsigned char byte0;
}bytes;
};
union ethernet_address_type{
unsigned int words[3];
unsigned char bytes[6];
};
union ip_address_type{
unsigned long dwords;
unsigned int words[2];
unsigned char bytes[4];
};
struct arp_table_type {
unsigned char inuse;
unsigned char online;
//unsigned int ipaddress[2];
//unsigned char ethernetaddress[6];
union ip_address_type ipaddress;
union ethernet_address_type ethernetaddress;
};
/*以太网帧*/
struct ethernet { unsigned char status; /*接收状态*/
unsigned char nextpage; /*下一个页*/
unsigned int length; /*以太网长度,以字节为单位,*/
unsigned int destnodeid[3]; /*目的网卡地址*/
unsigned int sourcenodeid[3]; /*源网卡地址*/
unsigned int protocal; /*下一层协议 */
unsigned char packet[518]; /*包的内容*/
} ;
struct arp { unsigned int head[9]; /*以太网头 */
/*arp报文的内容总长28字节*/
unsigned int harewaretype; /*以太网为0x0001*/
unsigned int protocaltype; /*ip 为0X0800*/
unsigned char halength; /*=0X06*/
unsigned char palength; /*=0X04*/
unsigned int operation; /*操作 0X0001为请求 0X0002为应答 */
/*0X0003为反向地址请求 0X0004为反向地址应答*/
unsigned int sourcenodeid[3]; /*源网卡地址*/
unsigned int sourceip[2]; /*源IP地址*/
unsigned int destnodeid[3]; /*目的网卡地址*/
unsigned int destip[2]; /*目的IP地址*/
};
struct ip { unsigned int head[9]; /*以太网包头*/
unsigned char verandihl; /*版本与头长度*/
unsigned char typeofserver; /*服务类型*/
unsigned int totallength; /*总长度*/
unsigned int frameindex; /*IP帧序号*/
unsigned int segment; /*分段标志*/
unsigned char ttl; /*生存时间*/
unsigned char protocal; /*下一层协议*/
unsigned int crc; /*校验和*/
unsigned int sourceip[2]; /*源IP*/
unsigned int destip[2]; /*目的IP*/
unsigned char packet[498]; /*IP包的内容*/
};
struct udp { unsigned int head[9];
unsigned int iphead[10];
unsigned int sourceport; /*源端口*/
unsigned int destport; /*目的端口*/
unsigned int length;
unsigned int crc; /*校验和 ,包括伪头部,udp头部,数据*/
unsigned char udpdata[478]; /*udp数据*/
};
struct tcp { unsigned int head[9];
unsigned int iphead[10];
unsigned int sourceport; /*源端口*/
unsigned int destport; /*目的端口*/
unsigned long seqnumber; /*顺序号*/
unsigned long acknumber; /*确认号*/
unsigned char offset; /*数据偏移量*/
unsigned char control; /*连接控制*/
unsigned int window; /*流控*/
unsigned int crc; /*校验和 ,包括伪头部,TCP头部,数据*/
unsigned int urg; /*紧急指针*/
unsigned char tcpdata[478]; /*TCP数据*/
};
struct ippacket { unsigned int head[9]; /*以太网包头*/
unsigned int ippacket[220]; /*IP包的内容*/
};
struct icmp {/*包含在IP包中,是IP的上层为0X01的应用*/
unsigned int head[9]; /*以太网头*/
unsigned int iphead[10]; /*IP头*/
unsigned char type; /*0X08 PING请求 0X00 PING应答*/
unsigned char option; /*0X00 PING*/
unsigned int crc;
unsigned int id;
unsigned int seq;
unsigned char icmpdata[478];
};
struct retransmit { unsigned char status; /*重发缓冲区状态*/
unsigned char timeout; /*超时时间值,单位为10毫秒,最大2.55秒*/
unsigned int length; /*以太网长度,以字节为单位,*/
unsigned int destnodeid[3]; /*目的网卡地址*/
unsigned int sourcenodeid[3]; /*源网卡地址*/
unsigned int protocal; /*下一层协议 */
unsigned char packet[518]; /*包的内容*/
};
union netcard {
struct {unsigned char bytebuf[536];}bytes;
struct{ unsigned int wordbuf[268];}words;
struct ethernet etherframe;
struct arp arpframe;
struct ip ipframe;
struct udp udpframe;
struct tcp tcpframe;
struct ippacket ippacket;
struct icmp icmpframe;
struct retransmit rtframe;
};
struct socket_type{
unsigned int my_port; //本机端口
unsigned int dest_port;//对方端口
unsigned int dest_ip[2];//对方ip
unsigned int dest_node_id[3];//对方的以太网地址
unsigned long irs;//初始化顺序号
unsigned long iss;//我的初始化序列号
unsigned long rcv_nxt;//对方的顺序号
unsigned long snd_nxt;//我的已经发送顺序号
unsigned long snd_una;//我的还没有确认顺序号
//unsigned long dest_ack_number;
unsigned int rcv_wnd;//对方的window大小
unsigned int snd_wnd; //我的window大小
unsigned int dest_max_segment_size;//对方接受的最大的数据包大小MTU
unsigned int my_max_segment_size;//我能接受的最大的数据包大小
unsigned long my_wl1;//seq
unsigned long my_wl2;//ack
unsigned char state;//连接状态
unsigned char open;
/* status: tcp_listen=0
tcp_syn_receive=1
tcp_syn_sent=2
tcp_syn_established =3
tcp_fin_wait1=4
tcp_fin_wait2=5
tcp_closing=6
tcp_close_wait=7;
tcp_last_ack=8;
tcp_closed=9
tcp_time_wait=10
*/
};
struct class_protocol_header{
unsigned char protocol; //0x55
unsigned char command;
unsigned char remain1;
unsigned char remain2;
};
struct class_retransmit_packet{
unsigned int dstip[2];
unsigned int frameindex;
unsigned char status;
unsigned char timeout;
};
struct class_command_buffer{
unsigned long dstipaddress;
unsigned char command[20];
};
struct class_dvr_buffer{
unsigned long dstipaddress;//unsigned int dstip[2];//union ip_address_type dstip;//
unsigned char cam_number;
};
#define com_rxd_buffer_size 4000 //缓冲区结束
#define com_txd_buffer_size 4000
#define command_buffer_size 50
#define tcp_fin 0x01
#define tcp_syn 0x02
#define tcp_rst 0x04
#define tcp_psh 0x08
#define tcp_ack 0x10
#define tcp_urg 0x20
#define tcp_state_listen 0
#define tcp_state_syn_rcvd 1
#define tcp_state_syn_sent 2
#define tcp_state_established 3
#define tcp_state_fin_wait1 4
#define tcp_state_fin_wait2 5
#define TCP_STATE_CLOSING 6
#define tcp_state_close_wait 7
#define tcp_state_last_ack 8
#define tcp_state_closed 9
#define tcp_state_time_wait 10
#define udp_port 1030
#define NormalTcp_Port 1025
#define ReduceTcp_Port 1026
#define Local_Dvr_Port 1027
#define Dvr_Port 2000
#define rt_size 20
#define rt_time 10
#define rt_cishu 5
#define rt_cmd_length 128
#define tcpdata_length 100
#define dvr_length 200
#define RetryTcp_Count 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -