完成端口中包含WSAOVERLAPPED的自定义结构
struct IOCP_IO
{
WSAOVERLAPPED ol; // 如果用完成端口 自定义结构中第一个参数必须是它,每次投递WSARecv或WSASend时都要初始化该变量
WSABUF wsaBuf; //一次投递接收的数据内容和长度
int ptr; //数据索引接收到第几个字节
IOCP_KEY_PTR iocp_key;
IOCP_OPERATION operation;//操作类型读写
char buf[BUFFER_SIZE];//接收发送缓冲区(每执行一个完整包就会在该缓冲区内接收开始地址是WSABUF的buf所指向的位
置WSABUF中的len个数据),如果一次没有读完 就要投递多次WSARecv
int len;//buf[BUFFER_SIZE]的数据长度
int CMD;//类型 用来约定每个连接
};
WSABUF的结构是
typedef struct _WSABUF {
u_long len; /* the length of the buffer */
char FAR * buf; /* the pointer to the buffer */
} WSABUF, FAR * LPWSABUF;
完整包和投递的次数对应与接收的数据没任何关系