IOCP
1: IOCP: 是windows针对高性能服务器做的IO的管理模式,又叫完成端口;
2: IOCP的核心模式:
1>提交请求;
2>等待结果;
3>继续提交请求;
3: 监听:
1>提交一个监听请求,使用完成端口来等待这个请求到来;
2>请求来了后,处理,继续提交请求;
4: 读取数据:
1>提交一个读取数据的请求。
2>请求完成后,处理完后继续提交;
5: 发送数据的请求:
1>提交一个发送数据的请求;
2>请求完成后,继续处理;
IOCP开发
1:配置IOCP开发环境:
#include <WinSock2.h>
#include <mswsock.h>
#include <windows.h>
#pragma comment(lib, "WSOCK32.lib ")
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "odbc32.lib")
#pragma comment(lib, "odbccp32.lib")
2: 创建一个IOCP;
3: 提交一个IOCP的监听请求:
4: 提交读请求;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*
IOCP 只支持windows平台 Linux epoll
*/
#include <WinSock2.h>
#include <MSWSock.h>
#include <Windows.h>
#pragma comment(lib,"WSOCK32.LIB")
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"odbc32.lib")
#pragma comment(lib,"odbccp32.lib")
// 非常重要的数据结构;
enum{
IOCP_ACCEPT = 0, // 监听socket,接入请求;
IOCP_RECV, // 读请求;
IOCP_WRITE, // 写请求;
};
// 接收数据的时候最大的buf大小;
#define MAX_RECV_SIZE 8192
struct io_package{
// 自己定义的, 一定要在第一个就要用WSAOVERLAPPED 结构体;?
// 所有的请求的等待,都是等在这个结构对象上的,必须是第一个;
WSAOV