⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datastruct.h

📁 Windows 2000. --*/ 的完成端口例子
💻 H
字号:
#pragma once

#include "DoubleList.h"
//////////////////////////////////////////////////////////////////////////

#define    BUFFER_SIZE           4096
#define    MAXTHREAD_COUNT       8

#define    PORT                  7000
#define    ADDR					 "127.0.0.1"

//////////////////////////////////////////////////////////////////////////

//
//完成端口完成的事件
//
typedef enum
{
		IOCP_COMPLETE_READ,
		IOCP_COMPLETE_ACCEPT_READ,
		IOCP_COMPLETE_WRITE,
		IOCP_COMPLETE_ACCEPT
}IOCP_COMPLETE_STATE;

//
//自定义枚举数据类型,用来标识套接字IO动作类型
//
typedef enum 
{
        IOCP_ACCEPT, //AcceptEx/accept
		IOCP_READ,   //WSARecv/recv/ReadFile
		IOCP_WRITE,   //WSASend/send/WriteFile
		IOCP_END
}IOCP_OPERATION, *IOCP_OPERATION_PTR;


//
//自定义结构,即“完成键”(单句柄数据)
//
typedef struct
{
	SOCKET                     socket;
}IOCP_KEY,*IOCP_KEY_PTR;

//
//标志SOCKET的当前状态
//
enum
{
	SOCKET_STATE_NOT_CONNECT,
	SOCKET_STATE_CONNECT,
	SOCKET_STATE_CONNECT_AND_READ,
	SOCKET_STATE_TIMEOUT
};


//
//单IO数据,扩展的WSAOVERLAPPED
//
typedef struct 
{
	WSAOVERLAPPED				ol;
	char						buf[BUFFER_SIZE];
	WSABUF						wsaBuf;
	SOCKET						socket;

	IOCP_OPERATION				operation;

	volatile int				state;
}IOCP_IO,*IOCP_IO_PTR;

typedef CDoubleList<IOCP_IO,		10>	IO_GROUP;
typedef CDoubleList<IOCP_KEY,		10>	KEY_GROUP;

typedef IO_GROUP::ITERATOR	IO_POS;
typedef KEY_GROUP::ITERATOR KEY_POS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -