Files
wnmj/Servers/服务器组件/网站网关服务器/Overlapped.h
2026-02-13 14:34:15 +08:00

65 lines
1.1 KiB
C

#ifndef __OEVERLAPPED_H__
#define __OEVERLAPPED_H__
#define IoSend 1 // 发送事件
#define IoRecv 2 // 接收事件
#define IoExit 3 // 退出系统
#define MAX_PACKAGE_SIZE 2048 // 单次发送或接受包的大小
#define MAX_USER_PACK_SIZE 65534 // 用户封包,单个包的最大字节数
struct stOverlappedBase : public OVERLAPPED
{
UINT IoMode;
WORD nClient;
WSABUF WsaBuf;
stOverlappedBase()
{
// init OVERLAPPED
Internal=0;
InternalHigh=0;
Offset=0;
OffsetHigh=0;
hEvent=0;
// init SOverlapped
IoMode=0;
nClient=0xFFFF;
WsaBuf.buf=NULL;
WsaBuf.len=0;
}
};
struct stSendOverlapped : public stOverlappedBase
{
char *pBuffer; // 发送数据的缓存指针
DWORD dwSentBytes; // 已经发送的字节数
DWORD dwTotalBytes; // 当前包的总的字节数
stSendOverlapped()
{
IoMode = IoSend;
pBuffer = NULL;
dwSentBytes = 0;
dwTotalBytes = 0;
}
};
struct stRecvOverlapped : public stOverlappedBase
{
char buffer[MAX_PACKAGE_SIZE]; // 接收缓存
stRecvOverlapped()
{
memset(buffer, 0, MAX_PACKAGE_SIZE);
IoMode = IoRecv;
WsaBuf.buf=buffer;
WsaBuf.len=MAX_PACKAGE_SIZE;
}
};
#endif