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

📄 iocpbuffer.h

📁 提供加密的c/s 聊天程序。用到对称加密算法和非对称加密算法
💻 H
字号:
// IOCPBuffer.h: interface for the CIOCPBuffer class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_IOCPBUFFER_H__87DEF694_32D6_4F21_8FF5_E16184A9CDC3__INCLUDED_)
#define AFX_IOCPBUFFER_H__87DEF694_32D6_4F21_8FF5_E16184A9CDC3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


/*
* This Class is used to pass around the buffer and the operation that 
* is done asynchronously. 
*
*/
#include "IOCPS.h"

class CIOCPBuffer   
{
public:
	void Init();	
	PBYTE GetPayLoadBuffer();
	BOOL CreatePackage(BYTE Type, UINT iFilesize,UINT iBufferSize, const BYTE *const pData);
	BOOL GetPackageInfo(BYTE &Type, BYTE &key, CString &stxt);
	BOOL CreatePackage(BYTE Type, BYTE key,  CString stxt);
	BOOL GetPackageInfo(BYTE &Type,BYTE &key1,BYTE &key2,BYTE &key3, CString &stxt);
	// Used with overlapped.. 
	OVERLAPPED			m_ol;
	BOOL Flush(UINT nBytesToRemove);
	POSITION GetPosition();
	void SetPosition(POSITION pos);    
	WSABUF * GetWSABuffer();
	// sets the SequenceNumber of this object. 
	void SetSequenceNumber(int nr);
	// Get The sequensNumber of the buffer object. 
	int GetSequenceNumber();
	// Setup Different Types in buffer. 
	void SetupWrite();
	void SetupRead();
	void SetupZeroByteRead();
	int GetOperation();
	void SetOperation(int op);
	void EmptyUsed();
	UINT Use(UINT nSize);
	UINT GetUsed();
	//UINT GetSize();
	BOOL IsValid();
	// DUMP the buffer. (For Debug)
	void DUMP();
	// Write different types of variabels to the buffer
	BOOL AddData(const BYTE * pData,UINT nSize);
	BOOL AddData(const char * pData,UINT nSize);
	BOOL AddData(BYTE data);
	BOOL AddData(UINT data);
	BOOL AddData(unsigned short data);

	//  Create different type of Packages in the Buffer..
	BOOL CreatePackage(CString stxt);
	BOOL CreatePackage(BYTE Type,CString stxt);
	BOOL CreatePackage(BYTE Type,UINT nData, CString stxt);
	BOOL CreatePackage(BYTE Type);
	BOOL CreatePackage(BYTE Type,BYTE key1,BYTE key2,BYTE key3, CString stxt);
	//
	// Get information from the Package.. 
	//
	// Reurns the Pakage size if possible -1 if error. 
	UINT GetPackageSize();
	// Gets The package Type returns 255 if error. 
	BYTE GetPackageType();
	// Reads the info from a package created with CreatePackage(CString stxt);
	BOOL GetPackageInfo(CString &stxt);
	// Reads the info from a package created with CreatePackage(BYTE Type,CString stxt);
	BOOL GetPackageInfo(BYTE &Type, CString &stxt);
	// Reads the info from a package created with CreatePackage(BYTE Type,CString stxt);
	BOOL GetPackageInfo(BYTE &Type,UINT &nData, CString &stxt);
	// returns A pointer to the Buffer 
	PBYTE GetBuffer();
	CIOCPBuffer();
	virtual ~CIOCPBuffer();

private:
	int m_iSequenceNumber;
	// The Type of Operation. 
	int		m_Operation;
	// Size of the Buffer 
	//UINT	m_nSize;
	// number of bytes that are Used.  
	UINT    m_nUsed;
	// The buffer. 
	BYTE m_Buffer[MAXIMUMPACKAGESIZE];
	//Holds the Buffer Used for send/receive
	WSABUF m_wsabuf;
	// Used to remove the buffer from the queue. 
	POSITION m_pPos;
};

#endif // !defined(AFX_IOCPBUFFER_H__87DEF694_32D6_4F21_8FF5_E16184A9CDC3__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -