传输接口设计说明

网络数据异步传输接口设计与方法
1. 概述

TransmissionInterface 类定义了一个抽象接口,用于实现网络数据的异步传输,包括加密、解密及压缩功能。此设计旨在为不同的传输协议提供统一的操作接口。

2. 数据结构定义

该接口提供了多个方法,以支持数据的发送和接收,并实现必要的加密和压缩功能。

#pragma once
#include "Protocal.h"
#include <memory>
#include <string>

class TransmissionInterface
{
public:
	enum EncrptyType
	{
		NO_ENC = 0,
		RC4_ENC,
		AES_ENC,
	};

	// 通过传输数据接口发送数据 pHeader 由调用者自己创建,方法中会复制
	virtual void WriteDataAsync(Protocal::Header* pHeader,
		const char* pData,
		size_t dataSize,
		EncrptyType encType = RC4_ENC,
		bool bIgnoreHeader = false) = 0;

	// 通过Header从传输对象中得到数据体 返回的string对象只能用不能改
	virtual const std::string & GetReadDataBody(Protocal::Header *pHeader, EncrptyType encType = RC4_ENC) = 0;

	// 工具方法,压缩解压缩 加解密方法,返回的string对象动态创建,必须使用 ReleaseString 去释放
	virtual const std::string * CompressAndAesEncrypt(const char *pData, const size_t dataSize) = 0;
	virtual const std::string * AesDecryptAndUncompress(const char *pData, const size_t dataSize) = 0;
	virtual const std::string * CompressAndRc4Encrypt(const char *pData, const size_t dataSize) = 0;
	virtual const std::string * Rc4DecryptAndUncompress(const char *pData, const size_t dataSize) = 0;
	virtual void ReleaseString(const std::string *pString) = 0;

	virtual std::string GetAddress() { return ""; }
	virtual unsigned int GetPort() { return 0; }
};
3. 方法说明
  • WriteDataAsync:

    • 通过传输接口异步发送数据。
    • pHeader:调用者创建的协议头指针。
    • pData:要发送的数据。
    • dataSize:数据大小。
    • encType:加密类型,默认为 RC4_ENC
    • bIgnoreHeader:是否忽略头部信息。
  • GetReadDataBody:

    • 从传输对象中获取数据体,返回的字符串对象只读。
    • pHeader:协议头指针。
    • encType:加密类型,默认为 RC4_ENC
  • CompressAndAesEncrypt:

    • 压缩并使用 AES 加密数据,返回动态创建的字符串对象。
  • AesDecryptAndUncompress:

    • 使用 AES 解密并解压缩数据,返回动态创建的字符串对象。
  • CompressAndRc4Encrypt:

    • 压缩并使用 RC4 加密数据,返回动态创建的字符串对象。
  • Rc4DecryptAndUncompress:

    • 使用 RC4 解密并解压缩数据,返回动态创建的字符串对象。
  • ReleaseString:

    • 释放动态创建的字符串对象。
  • GetAddress:

    • 获取传输对象的地址,默认返回空字符串。
  • GetPort:

    • 获取传输对象的端口,默认返回0。
4. 总结

TransmissionInterface 提供了一个灵活的框架,以支持不同协议下的数据传输、加密和解密。通过此接口,开发者可以方便地实现不同的传输层逻辑,同时保证代码的可扩展性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值