博文
IOCP配合AcceptEx的例子(2)(2006-07-02 14:36:00)
摘要:这是在学《Windows网络编程(第二版)》第六章时制作的一个例子
由于书中没有给出简洁的例子,本人在学这里时就费了很多时间。
现在把完成的代码贴出来,供大家参考。
本程序在VS2003编译器编译运行。在6.0下可能需要稍加修改。
DWORD WINAPI ServerThread(LPVOID lpParam)
{
HANDLE CompletionPort = (HANDLE)lpParam;
DWORD bytes;
LPPER_HANDLE_DATA perHandleData = NULL; //单句柄数据
LPPER_IO_DATA perIoData; //单IO数据
DWORD Flags;
int ret;
DWORD RecvBytes;
//进入循环的等待重叠操作的完成
while(true)
{
bytes = -1;
ret=GetQueuedCompletionStatus(
CompletionPort,  ......
IOCP配合AcceptEx的例子(1)(2006-07-02 14:33:00)
摘要:
在论坛找到的,搬进来备查,呵呵
感谢作者的辛苦劳动:)
作者:chang290 发表时间:2005-12-17 16:38:00
这是在学《Windows网络编程(第二版)》第六章时制作的一个例子
由于书中没有给出简洁的例子,本人在学这里时就费了很多时间。
现在把完成的代码贴出来,供大家参考。
下面包括了主程序部分,工作线程在(2)中贴出,由于代码太长。
本程序在VS2003编译器编译运行。在6.0下可能需要稍加修改。
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <mswsock.h> //微软扩展的类库
using namespace std;
#define SEND 0
#define RECV 1
#define ACCEPT 2
#define DATA_LENGTH 1000
//单句柄数据定义
typedef struct _PER_HANDLE_DATA
{
SOCKET socket; //相关的套接字
SOCKADDR_STORAGE clientAddr; //客户端的地址
}PER_HANDLE_DATA,*LPPER_HANDLE_DATA;
//但IO操作数据
typedef struct{
OVERLAPPED overlapped;
WSABUF buffer; //一个数据缓冲区,用于WSASend/WSARecv中的第......