下面代碼是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