-------------------dll.h
#ifdef IOCP_EXPORTS
#define IOCP_API __declspec(dllexport)
#else
#define IOCP_API __declspec(dllimport)
#endif
-------------------------const.h
#ifndef CONST_H
#define CONST_H
#pragma once
#define DEFAULT_MESSAGE_BLOCK_SIZE 1024
#define DATA_BUF_LENGHT 2048 //数据缓存大小
#define SOCKADDR_IN_SIZE ( sizeof(SOCKADDR_IN) + 16 )
#define CREATE_COMPLETE_PORT_FAILURE -1
#define CREATE_LISTEN_PORT_FAILURE -2
#define WORKER_THREAD_PER_CPU 2 //一个CPU开的工作线程数量
#include <winsock2.h>
#include <mswsock.h>
//IO类型
enum ENUM_IO_TYPE
{
ACCEPT,
READ,
WRITE
};
//IO类型
enum LOG_PRINT__TYPE
{
LOG_NOTIFY,
LOG_WARNING,
LOG_ERROR
};
struct ClientSocket;
// OVERLAPPEDEX
struct OVERLAPPEDEX
{
OVERLAPPED ol;
WSABUF wsabuf;
ENUM_IO_TYPE ioType;
CHAR buf[DATA_BUF_LENGHT];
ClientSocket* pClientSock;
BOOL bSaveSend;
DWORD bytesTransferred;
};
//ClientSocket
struct ClientSocket
{
SOCKET socket;
OVERLAPPEDEX olex;
BYTE AddressBuffer[SOCKADDR_IN_SIZE*2];
DWORD bytesTransferred;
INT iAddrLen;
INT userID;
BOOL bIsServer; //是否为服务器
BOOL bIsUPDSock; //是否为udp连接
};
//用户的在线状态
struct UserState
{
int m_nUserID;
char m_nUserState;
int m_nIP; //IP地址
int m_nPort; //UPD通信端口号
};
#define GET_CLIENT_ADDRESS(addr) ( *( (int*) ( (addr) + 42 ) ) )
#endif