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

📄 tcp.h

📁 RTL8019以太网开发板资料
💻 H
字号:
//-----------------------------------------------------------------------------
// TCP.H
//
//-----------------------------------------------------------------------------
#include "main.h"		// toupper



// TCP states
#define STATE_CLOSED					0		 //表示没有连接
#define STATE_LISTEN					1		 // 监听来自远方TCP端口的连接请求
#define STATE_SYN_SEND					2		 //在发送连接请求后等待匹配的连接请求
#define STATE_SYN_RECEIVED				3		 //在收到和发送一个连接请求后等待对连接请求的确认
#define STATE_ESTABLISHED				4		 //代表一个打开的连接,数据可以传送给用户
#define STATE_CLOSE_WAIT				5		 //等待从本地用户发来的连接中断请求
#define STATE_LAST_ACK					6		// 等待原来发向远程TCP的连接中断请求的确认
#define STATE_FIN_WAIT_1				7		//等待远程TCP的连接中断请求,或先前的连接中断请求的确认
#define STATE_FIN_WAIT_2				8		//从远程TCP等待连接中断请求
#define STATE_CLOSING					9		//等待远程TCP对连接中断的确认
#define STATE_TIME_WAIT					10		//等待足够的时间以确保远程TCP接收到连接中断请求的确认

// TCP flag bits
#define FLG_URG						0x0020		 //紧级位
#define FLG_ACK						0x0010		 //确认位
#define FLG_PSH						0x0008		 //急迫位
#define FLG_RST						0x0004		 //重置位
#define FLG_SYN						0x0002		 //同步位
#define FLG_FIN						0x0001		 //结束位

// Miscellaneous
#define NO_CONNECTION  			5 
#define TCP_TIMEOUT				4		// = 2 seconds
#define INACTIVITY_TIME			30		// = 15 seconds

#define TCP_COM				1		//发送TCP的命令
#define TCP_TDATA			2		//发送TCP的数据
#define TCP_HTTP			3		//发送TCP的数据
#define TCP_END				0		//无发送



        /* TCP分组格式 */
typedef struct
{
    UWORK16 usSourcePort;			//源端口号
    UWORK16 usDesPort;				//目标端口号
    UWORK32   ucSERIESNUM;          //序号 		 //接收的序列号是回复的确认号。
    UWORK32   ucTRUECODE;          //确认号		//回复时的确认号是接收的序列号加1。
	UWORK16   ucMOVENUM;			//偏移量
	UWORK16   ucWINDOWBIG;			//窗口大小
	UWORK16   ucTCPCHECK;			//校验位
	UWORK16   ucMUSGPOINT;			//紧急指针
	UWORK8 	  options[32];					//相关选项
}ST_TCP_FORMAT;

typedef struct					//表示同时可以接收的多少个IP地址的数据
{
  UWORK32 ipaddr;
  UWORK16  usDesPort;		  //回复TCP时,目标端口与等于接收TCP数据中的源端口号
  UWORK32 ucTRUECODE;		 //回复TCP时的确认号,等于接收到TCP的序列号加1
  UWORK32 ucSERIESNUM;		 //发送或回复时自己的序列号
  UWORK32 ucBakSERIESNUM;	 //备份序列号
  UWORK32 ucRESERIESNUM;	 //接收到数据后确认时用的.回复的序列号,等于接收数据的确认号
  UWORK32 ucBakTRUECODE;	 //备份确认号
  UWORK8 HttpFlag;
  UWORK8 timer;
  UWORK8 ReSendNum;				//重发次数
  UWORK8 inactivity;	 
  UWORK8 state;
  UWORK16 SendLen;
  UWORK8 query[30];
} Str_CONNECTION;




typedef struct
{
	UWORK8 xdata *buf;
	UWORK32 ipaddr;
	UWORK8 proto_id;
	UWORK16 len;
	UWORK8 timer;
} Str_WAIT;

extern UWORK8 HttpSendFlag;		//HTTP有发送的数据
extern Str_CONNECTION xdata StrConnection_buf[5];
extern char xdata text[];

extern void tcp_ReSend(UWORK16 TLen, UWORK8 nr);
extern void tcp_ReSendBack(UWORK16 TCPHead_len, UWORK8 nr);
extern void tcp_ReBack(UWORK16 flags,  UWORK16 hdr_len, UWORK8 nr);
extern void TCPReceive(void);
extern void tcp_retransmit(void);
extern void tcp_inactivity(void);
extern void init_tcp(void);
extern void TcpFromSeries(UWORK8 *pucAddr,UWORK16 usLen);	 //串口的数据发送给TCP
extern void tcp_Send(UWORK16 flags,  UWORK16 TCPHead_len, UWORK8 nr, UWORK8 *TData, UWORK16 TLen);



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -