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

📄 struct.h

📁 利用51单片机对RTL8109进行控制
💻 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 + -