shengzhaodong / tcpclient

基于多线程的非阻塞 socket 编程

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tcpclient

1、介绍

这是基于 RT-Thread 基于多线程的非阻塞 socket 编程示例,本文主要是介绍如何使用 tcpclient.c API。详情可了解:多线程的非阻塞 socket 编程

1.1、目录结构

名称 说明
inc 头文件目录
src 源代码目录
examples 例程目录

1.2、许可证

tcpclient 遵循 LGPLv2.1 许可,详见 LICENSE 文件。

1.3、依赖

  • 依赖 EasyLogger 软件包
  • 依赖 dfs 文件系统
  • RT-Thread 3.0+,对 bsp 无依赖

2、使用 tcpclient

测试 tcpclient.c 可参考例程代码,该代码位于: 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 制作了 EasyLogger 软件包
  • 维护:never

About

基于多线程的非阻塞 socket 编程


Languages

Language:C 97.2%Language:Python 2.8%