网络通信
文章平均质量分 61
Jackindata
嵌入式软件工程师
展开
-
Mac OSX 安装 libcoap
coap协议初体验原创 2022-08-06 16:42:42 · 616 阅读 · 1 评论 -
MQTT 06 - MQTT 客户端自动重连机制
Paho 客户端的 python 实现:https://pypi.org/project/paho-mqtt/进入 client 的事件循环之后,Paho client 内部将会自动处理掉线重连。但是重连后的状态变化,重连的重试次数等,需要小心处理。以下几个参数与函数接口需要特别留意。loop_start()、loop_forever() 接口进入 client 事件循环,此时开始将自...原创 2019-02-21 08:26:46 · 8002 阅读 · 7 评论 -
MQTT 05 - 使用 MQTT 进行进程间通信的消息设计
1、为什么需要进程间通信复杂业务系统的实现大体有两种相对的实现思路,一是做一个大而全的程序,这个程序什么都管,完整地实现了该业务系统的所有功能;二是把复杂系统分解为一系列功能点,再对应做多个程序来共同实现整体功能。后一种思路正是 UNIX 哲学的体现:程序应该只关注一个目标,并尽可能把它做好。让程序能够互相协同工作。应该让程序处理文本数据流,因为这是一个通用的接口。那么,这就是进程...原创 2019-02-20 08:47:30 · 2274 阅读 · 0 评论 -
MQTT 04 - 移植 MQTT client paho 到 omapl138
概述根据上篇《移植 MQTT broker mosquitto 到 omapl138》https://blog.csdn.net/engrossment/article/details/87596255移植好 MQTT 的 server 后,下一步就是移植客户端了。下面介绍两个客户端的移植安装。可以按需选择。其实这里介绍的两个都是 eclipse 实现的 paho.mqtt,只是不同语...原创 2019-02-19 08:44:51 · 456 阅读 · 0 评论 -
MQTT 03 - 移植 MQTT broker mosquitto 到 omapl138
概述本次移植使用创龙的 TL138-EVM 开发板,基于 TI 的 MCSDK 开发环境。具体上位机系统为 Ubuntu 12.04-32bit,软件环境基于创龙的用户手册搭建。为了移植后在 138 上运行的 web 服务也能使用 mosquitto,所以编译构建时要开启其 libwebsocket 功能支持。所以这里移植就总共分三步走。交叉编译 libwebsocket,交叉编译 mos...原创 2019-02-18 08:45:35 · 409 阅读 · 0 评论 -
MQTT 02 - MQTT 设计原则
简单。 没有杂七杂八的花俏功能,作为一个基础组件构建实用的系统,易于实现。 “发布/订阅”消息传递方式。 随时接入随时发布、接收消息,无需太多其他“事先约定”的规则。 无需复杂管理。 智能响应未定义行为保证正常工作。例如可以动态地创建所需主题,然后就发布。 最小化传输的附带信息。 在真正要传说的信息基础上只添加最少量的辅助信息,例如包头。降低带宽依赖,提高传输效率。...原创 2019-02-17 18:36:21 · 266 阅读 · 0 评论 -
MQTT 01 - MQTT 简介
MQTT 全称是 Message Queue Telemetry Transport,是一个轻量级的“发布/订阅”消息传输协议。官网 http://mqtt.org/发布/订阅MQTT 的基本概念是发布消息、订阅主题,即“pub/sub”。这需要有一个消息分发服务器和一个或多个客户端。当然,只有一个客户端也就没有意义了。每一个客户端可以订阅某些主题,可以发送各种主题的消息。服务器收到客...原创 2019-02-17 10:17:12 · 224 阅读 · 0 评论 -
使用 UDP 进行消息(信令)数据传输的设计
消息的设计先定义好需要的消息,可使用枚举类型给每一个消息定义一个值 定义一个通用的消息 header,包含 MESSAGE ID 字段 然后根据需要定义不同的消息,使用同样的 header 消息总大小不要大于 MTU 值。通常是 1500 ‑ 20 ‑ 8。 消息结构体声明 1 字节对齐。接收定义一个足够大(1500)的 buffer,每次指定读取 1500 字节 若返回值等于 ‑1,打印系统错误信息,返回 若返回值小于 header 的大小,打印错误信息,返回 若返回值大于 hea原创 2021-08-30 09:20:10 · 429 阅读 · 0 评论 -
使用 muduo 库基于 TCP 进行消息(信令)数据传输的设计
muduo 网络库:https://github.com/chenshuo/muduo本文与先前发的《使用 UDP 进行消息(信令)数据传输的设计》(https://blog.csdn.net/engrossment/article/details/119989756)比较相似,不过针对 TCP 与 UDP 的不同,进行了特别的设计。请留意。消息的设计定义好需要的消息,可使用枚举类型给每一个消息定义一个值 定义一个通用的消息 header,至少包含 msgid、msglen 字段。 然后原创 2021-08-31 09:20:57 · 249 阅读 · 0 评论 -
调用 recv 接收 socket 数据时返回值的检查与处理
要写出健壮、高可用性的程序,必须留心异常情况并逐一妥善处理。本文对从网络套接字读取数据的 recv 函数涉及的异常情况进行分析整理。当然,关于网络编程,网络方面的异常情况多种多样,这里不展开,只整理该函数本身相关的。创建套接字后,调用该函数,需要注意检查其返回值。分三种情况进行处理:返回值大于 0,表示本次调用读取到的字节数。如果已到达的数据是充足的,该值与参数中指定 len 值相等。否则将小于 len 值。 返回值等于 0。对于 TCP 连接来说,这表示对端已经关闭了连接。对于允许传输空数据帧的原创 2021-08-24 09:55:45 · 1886 阅读 · 0 评论 -
一个基于 muduo 库的异步处理的 UDP 客户端实现
概述muduo(GitHub - chenshuo/muduo: Event-driven network library for multi-threaded Linux server in C++11)实现了一个 one loop per thread 的模型,是进行异步处理的利器。而网络通信,由于数据到达的不可预期,使用异步方式是十分合适的。本文对使用 muduo 网路库实现一个 UDP 客户端进行数据收发处理的方法作简单介绍。由于 muduo 是一个运行于 Linux 上的 C++ 网路库,本文原创 2021-10-21 22:56:27 · 1249 阅读 · 1 评论