这是基于 RT-Thread 基于多线程的非阻塞 socket 编程示例,本文主要是介绍如何使用 tcpclient.c
API。详情可了解:多线程的非阻塞 socket 编程
名称 | 说明 |
---|---|
inc | 头文件目录 |
src | 源代码目录 |
examples | 例程目录 |
tcpclient 遵循 LGPLv2.1 许可,详见 LICENSE
文件。
- 依赖 EasyLogger 软件包
- 依赖 dfs 文件系统
- RT-Thread 3.0+,对 bsp 无依赖
测试 tcpclient.c
可参考例程代码,该代码位于: tcpclient_example.c
rt_tcpclient_t *rt_tcpclient_start(const char *hostname, rt_uint32_t port);
参数 | 描述 |
---|---|
hostname | IP 地址或域名 |
port | 端口号 |
返回 | 描述 |
tcpclient 对象指针 | 创建 TCP 客户端任务成功 |
RT_NULL | 创建 TCP 客户端任务失败 |
输入服务器 IP 地址 & (自定义的)端口号;服务器(网络调试助手)监听这个端口号
void rt_tcpclient_close(rt_tcpclient_t *thiz);
参数 | 描述 |
---|---|
thiz | tcp client 对象 |
返回 | 描述 |
无 | 无 |
通信结束,用户使用此 API 关闭资源
void rt_tcpclient_attach_rx_cb(rt_tcpclient_t *thiz, rx_cb_t cb);
参数 | 描述 |
---|---|
thiz | tcp client 对象 |
cb | 回调函数指针 |
返回 | 描述 |
无 | 无 |
回调函数需要由用户来写,可参考例程代码
rt_size_t rt_tcpclient_send(rt_tcpclient_t *thiz, const void *buff, rt_size_t len);
参数 | 描述 |
---|---|
thiz | tcp client 对象 |
buff | 要发送的数据 |
len | 数据长度 |
返回 | 描述 |
> 0 | 成功,返回发送的数据的长度 |
<= 0 | 失败 |
通信完毕,需要用户自己调用 rt_tcpclient_close()
API 释放资源