📄 sockmgr.h
字号:
// sockmgr.h: interface for the CSockManager class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SOCKMGR_H__D063F8D1_0584_40E3_8930_0004059BDFC8__INCLUDED_)
#define AFX_SOCKMGR_H__D063F8D1_0584_40E3_8930_0004059BDFC8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define SOCKMGR_SUCCESS 0
#define SOCKMGR_PENDING 1
#define SOCKMGR_SPACE_NOT_ENOUGH 10
#define SOCKMGR_DATA_NOT_ENOUGH 11
#define SOCKMGR_SOCK_FAILED 12
#define SOCKMGR_INVALID_PROCESS 13
#define SOCKMGR_SOCK_NOT_FOUND 14
#define SOCKMGR_BUFFER_LOCKED 15
#define SOCKMGR_SOCK_CLOSED 16
#define SOCKMGR_NOT_BUFFER 17
#define SOCKMGR_NOT_ENOUGH_MEMORY 18
#define SOCKMGR_SOCK_LOCKED 19
#define SOCKMGR_PACK_CRC_FAILED 20
#define SOCKMGR_IO_READY 20
#define SOCKMGR_IO_READING_PACKSIZE1 21
#define SOCKMGR_IO_READING_PACKSIZE2 22
#define SOCKMGR_IO_READING_PACKSIZE3 23
#define SOCKMGR_IO_READING_PACKDATA 25
#define SOCKMGR_IO_READ_FINISH 26
#define SOCKMGR_IO_WRITING_PACKDATA 27
#define SOCKMGR_IO_WRITE_FINISH 28
#define BUFFER_LOCKED_NONE 0
#define BUFFER_LOCKED_RECV 1
#define BUFFER_LOCKED_SEND 2
#define BUFFER_LOCKED_USER 3
#define BUFFER_BEGIN 0
#define BUFFER_CURRENT 1
#define BUFFER_END 2
#define SOCKMGR_SEND_COMPRESS 1
#define SOCKMGR_SEND_ENCRYPT 2
class CSockManager
{
public:
typedef struct _PACK_INFO
{
char *pData;
int nDataSize;
int nPackSize;
bool bCompress;
bool bEncrypt;
} PACK_INFO, *PPACK_INFO;
typedef int (*IoCallBack)(PPACK_INFO pack, LPVOID param = NULL);
CSockManager();
virtual ~CSockManager();
int SendPack(SOCKET sock);
int RecvPack(SOCKET sock);
int ReadBuffer(SOCKET sock, char *buffer, int length);
int WriteBuffer(SOCKET sock, char *buffer, int length);
int GetBufferDataSize(SOCKET sock);
int InsertSock(SOCKET sock);
void DeleteSock(SOCKET sock);
int GetIoStateCode(SOCKET sock);
int OpenListenSock(char *bind_ip, int bind_port);
int GetBufferHandle(SOCKET sock, void **buffer, int *length);
void ReleaseBufferHandle(SOCKET sock);
int MovePointer(SOCKET sock, int move, int method = BUFFER_BEGIN);
void CleanupBuffer(SOCKET sock);
char *GetErrorString();
static int SendPack(SOCKET sock, char *buffer, int length = 0, int flags = 0);
static int RecvPack(SOCKET sock, IoCallBack funback, LPVOID funparam = NULL);
static void InterruptSend(SOCKET sock);
static void InterruptRecv(SOCKET sock);
private:
typedef struct _SOCK_IO_BUFFER
{
char *buffer;
int pointer;
int datalength;
int length;
int maxlength;
} SOCK_IO_BUFFER, *PSOCK_IO_BUFFER;
typedef struct _SOCK_IO_MANAGER
{
SOCKET sock;
SOCK_IO_BUFFER sib;
int siblock;
int status;
int packsize;
IoCallBack sendcb;
IoCallBack recvcb;
IoCallBack errorcb;
} SOCK_IO_MANAGER, *PSOCK_IO_MANAGER;
typedef struct _TEMP_BUFFER
{
SOCKET sock;
char *buffer;
int length;
int pointer;
int method;
IoCallBack funback;
LPVOID funparam;
struct _TEMP_BUFFER *next;
} TEMP_BUFFER, *PTEMP_BUFFER;
PSOCK_IO_MANAGER ppsim[MAX_CONNECT];
int simCount;
int lastErrorCode;
static bool Inited;
static PTEMP_BUFFER ptb;
static CRITICAL_SECTION SendCS;
static CRITICAL_SECTION RecvCS;
bool InitBuffer(PSOCK_IO_BUFFER psib, int BufferSize = 0);
void FreeBuffer(PSOCK_IO_BUFFER psib);
int GetSockIndex(SOCKET sock);
PVOID GetSim(SOCKET sock);
};
#endif // !defined(AFX_SOCKMGR_H__D063F8D1_0584_40E3_8930_0004059BDFC8__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -