65 lines
1.1 KiB
C
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 |