💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# 2.3.1接口描述 ![](https://box.kancloud.cn/1725a0dc39ccc213f017d58a9e24f275_1481x1829.png) ![](https://box.kancloud.cn/602da77979d4a8b304c7799cc00e5730_912x667.png) Agent组件接口的继承层次结构如图2.3.1-1所示,其中,ITcpAgent继承于IAgent,ITcpPullAgent和ITcpPackAgent则继承于ITcpAgent。主要接口方法如表2.3.1-1所示,其它接口方法请参考**Src/SocketInterface.h**文件的相关注释: **IAgent** ~~~ Start() 启动组件 Stop() 关闭组件 Connect() 连接服务器 Send() 发送数据 SendPackets() 发送多组数据 Disconnect() 断开连接 DisconnectLongConnections() 断开长连接 DisconnectSilenceConnections() 断开静默连接 PauseReceive() 暂停接收数据 HasStarted() 检查通信组件是否已启动 GetState() 获取通信组件当前状态 GetConnectionCount() 获取连接数 GetConnectPeriod() 获取连接时长 GetSilencePeriod() 获取静默时长 GetAllConnectionIDs() 获取所有连接的CONNID GetLocalAddress() 获取某个连接的本地地址 GetRemoteHost() 获取某个连接的远程主机 GetLastError() 获取最近一次失败操作的错误代码 GetLastErrorDesc() 获取最近一次失败操作的错误描述 SetWorkerThreadCount() 设置工作线程数量 SetMaxConnectionCount() 设置最大连接数量 ~~~ **ITcpAgent** ~~~ SendSmallFile() 发送小文件 SetReuseAddress() 设置是否启用地址重用机制 SetSocketBufferSize() 设置通信数据缓冲区大小 SetKeepAliveTime() 设置心跳检测包发送间隔 SetKeepAliveInterval() 设置心跳检测重试包发送间隔 ~~~ **ITcpPullAgent** ~~~ Fetch() 拉取数据 Peek() 窥探数据 ~~~ **ITcpPackAgent** ~~~ SetMaxPackSize() 设置最大包长限制 SetPackHeaderFlag() 设置包头校验标识 ~~~ Agent监听器接口的继承层次结构如图2.3.1-2所示,其中,ITcpAgentListener继承于IAgentListener,接口回调事件如表2.3.1-2所示: **ISocketListenerT** ~~~ OnHandShake() 握手完成 握手完成时触发 OnSend() 数据已发送 数据发送成功后触发 OnReceive() [PUSH] 数据到达(PUSH / PACK) 接收到数据时触发 OnReceive() [PULL] 数据到达(PULL) 接收到数据时触发 OnClose() 连接关闭 连接正常或异常关闭时触发 ~~~ **IComplexSocketListenerT** ``OnShutdown() 关闭通信组件 通信组件停止后触发`` **IAgentListenerT** ~~~ OnPrepareConnect() 准备建立连接 建立连接前触发 OnConnect() 成功建立连接 成功建立连接后触发 ~~~ # 2.3.2工作流程 ![](https://box.kancloud.cn/0e15a7fea6ef8e0fac38c4f1f7dda714_829x1275.png) 图2.3.2-1展示了服务端、客户端应用程序与Agent组件的交互流程: 1. 客户端应用程序调用Start() 方法启动Agent组件,如果调用成功则返回TRUE。 2. 客户端应用程序调用Connect() 方法向服务端应用程序发起连接请求,如果连接成功则返回TRUE并且会先后接收到OnPrepareConnect、OnConnect和OnHandshake事件。 3. 客户端应用程序调用Send() 方法向服务端应用程序发出数据后,客户端应用程序将收到OnSend事件。 4. 服务端应用程序向客户端应用程序发送数据时,客户端应用程序将收到OnReceive事件。 5. 断开连接时,客户端应用程序将收到OnClose事件。 6. 客户端应用程序调用Stop() 方法关闭Agent组件,如果调用成功则返回TRUE并收到OnShutdown事件。