?? 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 + -