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

📄 sockmgr1.h

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