2025-09-16 00:02:42 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
#include <functional>
|
|
|
|
|
|
|
|
|
|
|
|
// 前向声明
|
|
|
|
|
|
class CVrTCPClient;
|
2025-09-18 23:49:32 +08:00
|
|
|
|
class IVrTCPClient;
|
2025-09-16 00:02:42 +08:00
|
|
|
|
|
|
|
|
|
|
// 回调函数类型定义
|
2025-09-18 23:49:32 +08:00
|
|
|
|
using TCPRecvFunc = std::function<void(IVrTCPClient* pClient, const char* pData, const int nLen, void* pParam)>;
|
|
|
|
|
|
using LinkEventFunc = std::function<void(IVrTCPClient* pClient, bool connected, void* pParam)>;
|
2025-09-16 00:02:42 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief TCP客户端接口类
|
|
|
|
|
|
* 定义了TCP客户端的基本接口,用于网络通信
|
|
|
|
|
|
*/
|
|
|
|
|
|
class IVrTCPClient
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual ~IVrTCPClient() = default;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 连接设备
|
|
|
|
|
|
* @param sDevIP 设备IP地址
|
|
|
|
|
|
* @param nPort 端口号
|
|
|
|
|
|
* @param bReLink 是否自动重连
|
|
|
|
|
|
* @param linkFunc 连接状态回调函数
|
|
|
|
|
|
* @return 0表示成功,其他值表示失败
|
|
|
|
|
|
*/
|
2025-09-18 23:49:32 +08:00
|
|
|
|
virtual int LinkDevice(const std::string sDevIP, int nPort, bool bReLink, LinkEventFunc linkFunc, void* pParam) = 0;
|
2025-09-16 00:02:42 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 关闭设备连接
|
|
|
|
|
|
* @return 0表示成功,其他值表示失败
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual int CloseDevice() = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 启动工作线程
|
|
|
|
|
|
* @param fRecvFunc 接收数据回调函数
|
|
|
|
|
|
* @return 0表示成功,其他值表示失败
|
|
|
|
|
|
*/
|
2025-09-18 23:49:32 +08:00
|
|
|
|
virtual int StartWork(TCPRecvFunc fRecvFunc, void* pParam) = 0;
|
2025-09-16 00:02:42 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 发送数据
|
|
|
|
|
|
* @param pdata 数据指针
|
|
|
|
|
|
* @param nLen 数据长度
|
|
|
|
|
|
* @return true表示成功,false表示失败
|
|
|
|
|
|
*/
|
|
|
|
|
|
virtual bool SendData(const char* pdata, const int nLen) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 创建TCP客户端实例
|
|
|
|
|
|
* @return TCP客户端实例指针
|
|
|
|
|
|
*/
|
|
|
|
|
|
static IVrTCPClient* CreateInstance();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 销毁TCP客户端实例
|
|
|
|
|
|
* @param pInstance 待销毁的实例指针
|
|
|
|
|
|
*/
|
|
|
|
|
|
static void DestroyInstance(IVrTCPClient* pInstance);
|
2025-09-18 23:49:32 +08:00
|
|
|
|
};
|