📄 sockmgr1.h
字号:
// sockmgr1.h: interface for the CSockMgr class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SOCKMGR1_H__6A27E095_2FC1_4DBB_B954_784DB0F0D50C__INCLUDED_)
#define AFX_SOCKMGR1_H__6A27E095_2FC1_4DBB_B954_784DB0F0D50C__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 SOCKMGR_SEND_COMPRESS 1
#define SOCKMGR_SEND_ENCRYPT 2
#define SOCKMGR_SENDING 1
#define SOCKMGR_RECVING 2
class CSockMgr
{
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);
CSockMgr();
virtual ~CSockMgr();
int SendPack();
int RecvPack();
int ReadBuffer(char *buffer, int length);
int WriteBuffer(const char *buffer, int length);
SOCKET SetSocket(SOCKET sock1);
int GetBufferDataSize();
void FlushBuffer();
char *GetErrorString();
static int SendPack(SOCKET sock, const 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 _TEMP_BUFFER
{
SOCKET sock;
char *buffer;
int length;
int pointer;
int method;
IoCallBack funback;
LPVOID funparam;
struct _TEMP_BUFFER *next;
} TEMP_BUFFER, *PTEMP_BUFFER;
typedef struct _PACK_LINK
{
PPACK_TYPE_1 pack;
int length;
int pointer;
struct _PACK_LINK *next;
} PACK_LINK, *PPACK_LINK;
int lastErrorCode;
SOCKET sock;
DWORD flags;
IoCallBack sendcb;
IoCallBack recvcb;
IoCallBack errorcb;
SOCK_IO_BUFFER sib;
SOCK_IO_BUFFER sob;
PPACK_LINK packlink;
static bool Inited;
static PTEMP_BUFFER ptb;
static CRITICAL_SECTION SendCS;
static CRITICAL_SECTION RecvCS;
bool AllocBuffer(PSOCK_IO_BUFFER psb, int BufferSize = 0);
void FreeBuffer(PSOCK_IO_BUFFER psb);
};
#endif // !defined(AFX_SOCKMGR1_H__6A27E095_2FC1_4DBB_B954_784DB0F0D50C__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -