📄 tcp.h
字号:
/**---------------------版权 (c)----------------------------------------------------------***
*** 作者:颜章健 ***
*** 邮件:jenkinyan@163.com ***
*** ***
***---------------------File Info---------------------------------------------------------***
*** 创 建 人: 颜章健 ***
*** 创建日期: 2008-03-27 ***
*** 创建版本: ***
*** 文件描述: ***
***---------------------------------------------------------------------------------------***
*** 修 订 人: ***
*** 修订日期: ***
*** 修订版本: ***
*** 修订描述: ***
***---------------------------------------------------------------------------------------**/
#ifndef __tcp_h_
#define __tcp_h_
//#define USE_TCP_DEBUGER
// TCP协议配置
#define MAX_TCP_SOCKETS 1 // 用户需要建立的TCP接口数目
#define TCP_RXWINDOW_SIZE 0
#define TCP_TXWINDOW_SIZE 1024
//#define USE_TCP_RX_WINDOW
#define MAX_TCP_SEND_FAIL 10
#define NET_TICK_COUNTER T0TC
#define NET_TICK_LIMITED 300000
// TCP错误
#define TCP_ERR_USER 0
#define TCP_ERR_NONE 1
// TCP控制标志位,不可修改
#define TCPFLAG_URG 0x20
#define TCPFLAG_ACK 0x10
#define TCPFLAG_PSH 0x08
#define TCPFLAG_RST 0x04
#define TCPFLAG_SYN 0x02
#define TCPFLAG_FIN 0x01
#define TCPFLAG_NONE 0x00
// 接口状态
#define SOCKS_CLOSED 0x00
#define SOCKS_CONNREQ 0x01
#define SOCKS_TXSYN 0x02
#define SOCKS_SYNACK 0x03
#define SOCKS_OPENED 0x04
#define SOCKS_SENDREQ 0x05
#define SOCKS_SENDSTART 0x06
#define SOCKS_SENDING 0x07
#define SOCKS_SENDACK 0x08
#define SOCKS_CLOSEREQ 0x09
#define SOCKS_TXFIN 0x0a
#define SOCKS_FINACK 0x0b
#define SOCKS_RSTREQ 0x0c
#define SOCKS_RXSYN 0x0d
#define SOCKS_RXFIN 0x0e
#define SOCKS_RESET 0x0f
#define SOCKS_RESTART 0x10
#define UREQ_NONE 0x00
#define UREQ_CLOSE 0x01
#define UREQ_CONN 0x02
#define UREQ_RESET 0x03
#define UREQ_SEND 0x04
typedef struct _TCP_WINDOW
{
uint8 *Start;
uint8 *End;
uint16 BufLen;
uint8 *In;
uint8 *Out;
volatile
uint16 DatLen;
uint16 Size;
}TCP_WINDOW;
typedef struct _TCP_SOCKET
{
// struct _TCP_SOCKET *This;
struct _TCP_SOCKET *Next;
// uint8 *RxWinBuffer;
// uint8 *TxWinBuffer;
#if TCP_RXWINDOW_SIZE > 0
TCP_WINDOW RxWindow;
#endif
TCP_WINDOW TxWindow;
uint8 RXS;
uint8 TXS;
uint8 UREQ;
uint32 Time;
uint8 TOT;
uint32 RTT; // 数据包往返时间RTT(单位:ms)
uint32 SampRTT; // 用于采样RTT
int32 DEV; // 平均方差
uint32 Timeout;
uint8 DestAddr[4]; // 对方地址
uint16 DestPort; // 对方端口
uint16 LocalPort; // 本地端口
uint16 MTU; // 最大发送单元,创建连接时记录对方最大接收单元
uint16 MRU; // 最大接收单元,创建连接时告诉对方最大接收单元
uint16 DestSize; // 对方接收窗口大小
uint32 Seq; // 本地序列号,创建连接时本地随机生成
uint32 Ack; // 本地确认号,创建连接时根据对方序列号生成
uint32 LastRcvSeq;
uint32 LastRcvAck;
uint8 *Rxd; // Added by Yan Zhangjian(C) @ 2008-04-14
uint16 Rxl; // Added by Yan Zhangjian(C) @ 2008-04-14
// uint16 (*send) (struct _TCP_SOCKET */*This*/,uint8 */*src*/,uint16 /*len*/);
// uint16 (*recv) (struct _TCP_SOCKET */*This*/,uint8 */*dst*/,uint16 /*len*/);
// void (*connect) (struct _TCP_SOCKET */*This*/);
// void (*close) (struct _TCP_SOCKET */*This*/);
void (*hook) (struct _TCP_SOCKET */*This*/);
}TCP_SOCKET;
#if MAX_TCP_SOCKETS > 0
//TCP_SOCKET *TcpSocketCreate
uint8 TcpSocketCreate
( TCP_SOCKET */*Socket*/,
uint8 */*DestAddr*/, uint16 /*DestPort*/,
uint16 /*LocalPort*/, void (*/*RecvHook*/)(TCP_SOCKET *)
);
void TcpSocketDelete(TCP_SOCKET */*Socket*/);
uint16 TcpSocketSend(TCP_SOCKET */*This*/,uint8 */*src*/,uint16 /*len*/);
uint16 TcpSocketRecv(TCP_SOCKET */*This*/,uint8 */*dst*/,uint16 /*len*/);
void TcpSocketConnect(TCP_SOCKET */*This*/);
void TcpSocketClose(TCP_SOCKET */*This*/);
void TcpSocketReset(TCP_SOCKET */*Socket*/);
#endif
void TcpReceiveTask(void);
void TcpFsmTask(void);
void TcpInitial(void);
#endif
/********************************************************************************************
*** 文件结束 ***
********************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -