# tcpclient **Repository Path**: Inspire_weimin/tcpclient ## Basic Information - **Project Name**: tcpclient - **Description**: 基于多线程的非阻塞 socket 编程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-04 - **Last Updated**: 2024-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tcpclient ## 1、介绍 这是基于 RT-Thread 基于多线程的非阻塞 socket 编程示例,本文主要是介绍如何使用 `tcpclient.c` API。详情可了解:[多线程的非阻塞 socket 编程](https://github.com/neverxie/tcpclient/blob/master/an0019-rtthread-tcpclient-socket/an0019-rtthread-system-tcpclient-socket.md) ### 1.1、目录结构 | 名称 | 说明 | | ---- | ---- | | inc | 头文件目录 | | src | 源代码目录 | | examples | 例程目录 | ### 1.2、许可证 tcpclient 遵循 LGPLv2.1 许可,详见 `LICENSE` 文件。 ### 1.3、依赖 - 依赖 [EasyLogger](https://github.com/armink/EasyLogger) 软件包 - 依赖 [dfs](https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-manual-doc/zh/1chapters/12-chapter_filesystem/) 文件系统 - RT-Thread 3.0+,对 bsp 无依赖 ## 2、使用 tcpclient 测试 `tcpclient.c` 可参考例程代码,该代码位于: [tcpclient_example.c](https://github.com/neverxie/tcpclient/blob/master/examples/tcpclient_example.c) ## 3、 API 介绍 ### 3.1、启动 TCP 客户端任务 `rt_tcpclient_t *rt_tcpclient_start(const char *hostname, rt_uint32_t port);` | 参数 | 描述 | | ---- | ---- | | hostname | IP 地址或域名 | | port | 端口号 | |返回|描述| |tcpclient 对象指针|创建 TCP 客户端任务成功| |RT_NULL|创建 TCP 客户端任务失败 | >输入服务器 IP 地址 & (自定义的)端口号;服务器(网络调试助手)监听这个端口号 ### 3.2、关闭 TCP 客户端任务 `void rt_tcpclient_close(rt_tcpclient_t *thiz);` | 参数 | 描述 | | ---- | ---- | | thiz | tcp client 对象 | |返回|描述| | 无 | 无 | >通信结束,用户使用此 API 关闭资源 ### 3.3、注册接收数据的回调函数 `void rt_tcpclient_attach_rx_cb(rt_tcpclient_t *thiz, rx_cb_t cb);` | 参数 | 描述 | | ---- | ---- | | thiz | tcp client 对象 | | cb | 回调函数指针 | |返回|描述| | 无 | 无 | >回调函数需要由用户来写,可参考例程代码 ### 3.4、发送数据 `rt_size_t rt_tcpclient_send(rt_tcpclient_t *thiz, const void *buff, rt_size_t len);` | 参数 | 描述 | | ---- | ---- | | thiz | tcp client 对象 | | buff | 要发送的数据 | | len | 数据长度 | |返回|描述| | > 0 | 成功,返回发送的数据的长度 | |<= 0|失败| ## 4、注意事项 通信完毕,需要用户自己调用 `rt_tcpclient_close()` API 释放资源 ## 5、联系方式 & 感谢 * 感谢:[armink](https://github.com/armink/EasyLogger) 制作了 EasyLogger 软件包 * 维护:[never](https://github.com/neverxie)