下面代碼是CH57xNET.h中的一部分,按照描述,SocketInf[ ].ScokStatus表示當前socket的狀態(tài)和TCP連接狀態(tài)。最低字節(jié)表示socket狀態(tài),次低字節(jié)表示tcp狀態(tài)。

實際使用中發(fā)現(xiàn),對于TCP類型的socket,ScokStatus高3字節(jié)永遠是00,只有最低字節(jié)為0x05或0x00表示socket狀態(tài),而TCP狀態(tài)一直是0x00。

TCP連接是正常的,可以正常收發(fā)數(shù)據(jù)。

請問這是哪里用法不對嗎?或者是庫的bug?



/* socket狀態(tài) */

#define? SOCK_STAT_CLOSED? ? ? ? ? ? ? ? ? ? ?0X00? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* socket關閉 */

#define? SOCK_STAT_OPEN? ? ? ? ? ? ? ? ? ? ? ?0X05? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* socket打開 */


/* TCP狀態(tài) */

#define TCP_CLOSED? ? ? ? ? ? ? ? ? ? ? ? ? ? 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* TCP連接 */

#define TCP_LISTEN? ? ? ? ? ? ? ? ? ? ? ? ? ? 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* TCP關閉 */

#define TCP_SYN_SENT? ? ? ? ? ? ? ? ? ? ? ? ? 2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* SYN發(fā)送,連接請求 */

#define TCP_SYN_RCVD? ? ? ? ? ? ? ? ? ? ? ? ? 3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* SYN接收,接收到連接請求 */

#define TCP_ESTABLISHED? ? ? ? ? ? ? ? ? ? ? ?4? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* TCP連接建立 */

#define TCP_FIN_WAIT_1? ? ? ? ? ? ? ? ? ? ? ? 5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* WAIT_1狀態(tài) */

#define TCP_FIN_WAIT_2? ? ? ? ? ? ? ? ? ? ? ? 6? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* WAIT_2狀態(tài) */

#define TCP_CLOSE_WAIT? ? ? ? ? ? ? ? ? ? ? ? 7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 等待關閉 */

#define TCP_CLOSING? ? ? ? ? ? ? ? ? ? ? ? ? ?8? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 正在關閉 */

#define TCP_LAST_ACK? ? ? ? ? ? ? ? ? ? ? ? ? 9? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* LAST_ACK*/

#define TCP_TIME_WAIT? ? ? ? ? ? ? ? ? ? ? ? ?10? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 2MSL等待 */


/* sokcet信息表 */

#ifndef ST_SCOK_INF

#define ST_SCOK_INF

typedef struct _SCOK_INF

{

? ? UINT32 IntStatus;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 中斷狀態(tài) */

? ? UINT32 SockIndex;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* Socket索引值 */

? ? UINT32 RecvStartPoint;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 接收緩沖區(qū)的開始指針 */

? ? UINT32 RecvBufLen;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 接收緩沖區(qū)長度 */

? ? UINT32 RecvCurPoint;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 接收緩沖區(qū)的當前指針 */

? ? UINT32 RecvReadPoint;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 接收緩沖區(qū)的讀指針 */

? ? UINT32 RecvRemLen;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 接收緩沖區(qū)的剩余長度 */

? ? UINT32 ProtoType;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 協(xié)議類型 */

? ? UINT32 ScokStatus;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 低字節(jié)Socket狀態(tài),次低字節(jié)為TCP狀態(tài),僅TCP模式下有意義 */

? ? UINT32 DesPort;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 目的端口 */

? ? UINT32 SourPort;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 源端口在IPRAW模式下為協(xié)議類型 */

? ? UINT8? IPAddr[4];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* Socket目標IP地址 32bit*/

? ? void *Resv1;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 保留,內(nèi)部使用,用于保存各個PCB */

? ? void *Resv2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 保留,內(nèi)部使用,TCP Server使用 */

?// void (*RecvCallBack)(struct _SCOK_INF *socinf,UINT32 ipaddr,UINT16 port,UINT8 *buf,UINT32 len); /* 接收回調(diào)函數(shù)*/

? ? void (*AppCallBack)(struct _SCOK_INF *,UINT32 ,UINT16 ,UINT8 *,UINT32 ); /* 接收回調(diào)函數(shù)*/

}SOCK_INF;

#endif