⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sockmgr.h

📁 远程控制系统,可以实现局域网内进行远程控制计算机,很方便,并且是学习用的非常好的资料.
💻 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 + -