NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# 2.4.1接口描述 ![](https://box.kancloud.cn/6e8b963511d2044f791b60fede9c5732_1924x1216.png) ![](https://box.kancloud.cn/ef6c3152cb2f6e35d138ff5ed95dd7b6_912x619.png) Client组件接口的继承层次结构如图2.4.1-1所示,其中,ITcpClient、IUdpClient和IUdpCast继承于IClient,ITcpPullClient和ITcpPackClient则继承于ITcpClient。主要接口方法如表2.4.1-1所示,其它接口方法请参考**Src/SocketInterface.h**文件的相关注释: **IClient** ~~~ Start() 启动组件 Stop() 关闭组件 Connect() 连接服务器 Send() 发送数据 SendPackets() 发送多组数据 PauseReceive() 暂停接收数据 HasStarted() 检查通信组件是否已启动 GetState() 获取通信组件当前状态 GetConnectionID() 获取该组件对象的CONNID GetLocalAddress() 获取连接的本地地址 GetRemoteHost() 获取连接的远程主机 GetLastError() 获取最近一次失败操作的错误代码 GetLastErrorDesc() 获取最近一次失败操作的错误描述 ~~~ **ITcpClient** ~~~ SendSmallFile() 发送小文件 SetSocketBufferSize() 设置通信数据缓冲区大小 SetKeepAliveTime() 设置心跳检测包发送间隔 SetKeepAliveInterval() 设置心跳检测重试包发送间隔 ~~~ **ITcpPullClient** ~~~ Fetch() 拉取数据 Peek() 窥探数据 ~~~ **ITcpPackClient** ~~~ SetMaxPackSize() 设置最大包长限制 SetPackHeaderFlag() 设置包头校验标识 ~~~ **IUdpClient** ~~~ SetMaxDatagramSize() 设置数据报文最大长度 SetDetectAttempts() 设置检测重试次数 SetDetectInterval() 设置检测包发送间隔 ~~~ **IUdpCast** ~~~ SetMaxDatagramSize() 设置数据报文最大长度 SetReuseAddress() 设置是否启用地址重用机制 SetCastMode() 设置传播模式(组播或广播) SetMultiCastTtl() 设置组播报文TTL SetMultiCastLoop() 设置是否启用组播环路 GetRemoteAddress() 获取当前数据包的远程地址 ~~~ Client监听器接口的继承层次结构如图2.4.1-2所示,其中,ITcpClientListener和IUdpClientListener继承于IClientListener,接口回调事件如表2.4.1-2所示: **ISocketListenerT** ~~~ OnHandShake() 握手完成 握手完成时触发 OnSend() 数据已发送 数据发送成功后触发 OnReceive() [PUSH] 数据到达(PUSH / PACK) 接收到数据时触发 OnReceive() [PULL] 数据到达(PULL)接收到数据时触发 OnClose() 连接关闭 连接正常或异常关闭时触发 ~~~ **IClientListenerT** ~~~ OnPrepareConnect() 准备建立连接 建立连接前触发 OnConnect() 成功建立连接 成功建立连接后触发 ~~~ # 2.4.2工作流程 ![](https://box.kancloud.cn/cf1a223e1b631e61b7a46d2527aff6b6_801x1019.png) 图2.4.2-1展示了服务端、客户端应用程序与Client组件的交互流程: 1. 客户端应用程序调用Start() 方法向服务端应用程序发起连接请求,如果连接成功则返回TRUE并且会先后接收到OnPrepareConnect、OnConnect和OnHandshake事件。 2. 客户端应用程序调用Send() 方法向服务端应用程序发出数据后,客户端应用程序将收到OnSend事件。 3. 服务端应用程序向客户端应用程序发送数据时,客户端应用程序将收到OnReceive事件。 4. 断开连接时,客户端应用程序将收到OnClose事件。 5. 客户端应用程序调用Stop() 方法关闭Client组件,如果调用成功则返回TRUE并收到OnClose事件。