?? tcp.h
字號:
#ifdef TCP_GLOBALS
#define TCP_EXT
#else
#define TCP_EXT extern
#endif
/* TCP task SEM_NUM*/
//#define AppSemSend 8
//#define AppSemCon 12
//#define AppSemDisc 40
TCP_EXT OS_EVENT *AppSemSend[MAX_TCP_LINKS];
TCP_EXT OS_EVENT *AppSemCon[MAX_TCP_LINKS];
TCP_EXT OS_EVENT *AppSemDisc[MAX_TCP_LINKS];
/*tcp state define */
#define TCP_STATE_CLOSED 0
#define TCP_STATE_LISTEN 1
#define TCP_STATE_SYN_RCVD 2
#define TCP_STATE_SYN_SENT 3
#define TCP_STATE_ESTABLISHED 4
#define TCP_STATE_FIN_WAIT1 5
#define TCP_STATE_FIN_WAIT2 6
#define TCP_STATE_CLOSING 7
#define TCP_STATE_CLOSE_WAIT 8
#define TCP_STATE_LAST_ACK 9
#define TCP_STATE_TIME_WAIT 10
//tcp連接的標志位
#define TCP_FIN 0x01
#define TCP_SYN 0x02
#define TCP_RST 0x04
#define TCP_PSH 0x08
#define TCP_ACK 0x10
#define TCP_URG 0x20
struct tcp_data {
uint16 SourcePort;//f /*源端口*//
uint16 DestPort; //f /*目的端口*/
uint32 SeqNum; //0-3 f /*順序號*/
uint32 AckNum; //0-3 f /*確認號*/
uint8 offset; /*數據偏移量*/
uint8 control; /*連接控制*/
uint16 window; //f /*流控*/
uint16 Crc; //f /*校驗和 ,包括偽頭部,TCP頭部,數據*/
uint16 urg; /*緊急指針*/
uint8 tcpdata[MAX_TCP_DATA]; /*TCP數據*/
};
struct tcp_dhead{
uint8 rev;
uint8 NextProtocal;
uint16 TotalLen; /*校驗和,包括偽頭部,udp頭部,數據*/
uint8 SourceIp[4]; /*源端口*/
uint8 DestId[4]; /*目的端口*/
};
typedef struct {
struct tcp_dhead TcpDHead;
struct tcp_data Tcp;
}tcp_send;
struct Socket_Type{
uint16 My_Port; //本機端口
uint16 Dest_Port; //對方端口
uint8 Dest_Ip[4]; //對方ip
uint8 My_Ip[4];
uint32 IRS; //初始化順序號
uint32 ISS; //我的初始化序列號
uint32 Rcv_Next; //對方的順序號
uint32 Send_Next; //我的已經發送順序號
uint32 Sent_UnAck; //我的還沒有確認順序號
uint32 RecPassSeq;
uint32 RecPassAck;
uint32 SenPassSeq;
uint32 SenPassAck;
uint32 RecFutureAck;
uint32 SenFutureSeq;
//unsigned long dest_ack_number;
uint16 Rcv_Window; //對方的window大小
uint16 Snd_Window; //我的window大小
uint16 Dest_Max_Seg_Size; //對方接受的最大的數據包大小MTU
uint16 My_Max_Seg_Size; //我能接受的最大的數據包大小
uint32 My_Wl1; //seq
uint32 My_Wl2; //ack
uint8 State; //連接狀態
uint8 Open;
uint8 ResendState;
uint8 ResendTime;
uint16 ResendLength;
uint8 StaSem; //BIT7表示該連接是LISTEN開始的,即服務器的。BIT1是表示該連接等待AppSemCon信號量。BIT0是表示正等待AppSemSend信號量
//struct tcp_data resend_data;
uint8 TcpDHeadUint8[12];
uint8 TcpHeadUint8[MAX_TCP_DATA+20];
uint8 TcpDataQ[MAX_TCP_DATA];
uint16 TcpDataQWrPtr;
uint16 TcpDataQRdPtr;
};
TCP_EXT uint16 CheckSumTcp1(uint8 num,uint16 length);
TCP_EXT void Delete_Socket(uint8 num) ;
TCP_EXT struct Socket_Type TcpStatus[MAX_TCP_LINKS];
TCP_EXT void TcpHeadHandle(uint8 num ,uint16 Tcp_headlength_Control);
//TCP_EXT uint8 Tcp_Connect1(uint8 aa) keilreentrant ;
TCP_EXT uint8 Process_Tcp1(Rec_Ptr * Tcp_Rec) ;// USE_XDATA keilreentrant ;
TCP_EXT void Tcp_Initial(void);// keilreentrant ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -