- 博客(27)
- 资源 (1)
- 收藏
- 关注
原创 fdbus4.2 timer的使用
文章介绍了fdbus中的定时器实现,主要包括三个类:CSysLoopTimer、CBaseLoopTimer和CMethodLoopTimer。CSysLoopTimer是基础定时器类,提供enable()和config()方法管理定时器状态和时间参数,定时器按到期时间排序。CBaseLoopTimer继承前者,简化了定时器使能/禁用接口,并区分单次/重复定时模式。CMethodLoopTimer进一步封装,允许直接绑定类成员函数作为定时回调。关键机制包括定时器列表管理、重复触发标志处理和回调执行流程。
2025-07-24 21:00:00
487
原创 [FDBUS 4.2]fdbus消息发送失败后的流程处理
本文梳理了fdbus消息发送失败后的处理流程。消息以CFdbMessage封装并通过CBaseJob队列处理,发送失败达到重试上限后会设置错误标志位。CFdEventLoop据此标志位触发CSysFdWatch删除,导致CFdbSession析构。若客户端设置了重连标志,则重新向name_server请求服务端地址并建立连接,完成自动重连机制。整个流程实现了消息发送失败后的自动恢复处理。
2025-07-20 17:00:00
234
原创 [FDBUS4.2] watcher的使用
本文分析了fdbus框架中watcher机制的工作原理,重点介绍了三种watcher的实现方式。首先阐述了CFdbContext线程通过poll()方法触发消息收发的机制,详细描述了pollfds的构建过程。然后分别分析了三种核心watcher:CServerSocket负责服务端绑定和监听,CFdbSession处理消息收发和回调触发,CNotifyFdWatch用于任务队列通知。文章通过时序图和代码片段展示了watcher的初始化、事件注册和处理流程,特别是flags标志位在poll触发中的关键作用,以
2025-07-18 21:00:00
949
原创 [FDBUS 4.2]CFdEventLoop和CThreadEventLoop类的功能
本文分析了CFdEventLoop和CThreadEventLoop两种事件循环的实现机制及其关联关系。CFdEventLoop由FDB_CONTEXT创建,通过poll方法触发I/O处理,包含数据接收(CFdbSession)和发送(CNotifyFdWatch)两种处理流程。CThreadEventLoop由工作线程创建,通过轮询dispatch()处理任务队列和定时器。两种事件循环通过异步消息进行协作,其中客户端回调方法从CFdEventLoop迁移到工作线程的CThreadEventLoop执行,避
2025-07-17 20:00:00
902
原创 QNX端bridge网桥转发功能
摘要 本文探讨了在QNX系统中限制ARP Announcement报文传播范围的方法。通过建立网桥(bridge)配置,验证了不同网桥之间的报文隔离效果。实验采用Ubuntu主机连接QNX系统,通过tcpdump抓包分析发现:同一网桥内的网卡(emac0、vp0_la0、vp3_la0)会泛洪接收ARP报文,而不同网桥的网卡(vp4_la0)则不会收到该报文。结果表明,利用QNX的网桥功能可以有效控制ARP报文的传播范围,实现不同网桥间的报文隔离。
2025-07-16 20:00:00
280
原创 MSS、MTU、TSO的关系
摘要: MTU(最大传输单元)指数据链路层允许的最大数据包大小(以太网默认1500字节),影响IP层数据传输是否需要分片。MSS(最大报文段长度)是TCP协议确定的应用层最大数据分段,计算方式为MTU减去IP和TCP首部(通常1460字节)。TCP连接时会协商双方MSS最小值作为传输标准。TSO(TCP分段卸载)技术将数据分段任务交由网卡处理,降低CPU负载。可通过ifconfig或ethtool命令查看和调整MTU、MSS及TSO开关状态,优化网络性能。
2025-07-15 20:00:00
974
原创 Android以太网mDNS协议
MDNS全称Multicast DNSMDNS协议是一种在局域网内实现设备和服务自动发现的协议。具体来说,它允许设备在无需依赖中央服务器或配置文件的情况下,通过组播地址发送和接收DNS查询和响应,从而发现局域网中的其他设备和服务。MDNS协议基于DNS(协议,但使用组播地址来进行通信,因此能够在局域网中快速且高效地实现服务发现。当设备启动时,它会发送一个MDNS查询,询问局域网中是否有其他设备或服务可用。如果其他设备知道所需的名称,它们会回复一个MDNS响应,提供相应的IP地址。通过这种方式,
2025-07-12 18:00:00
661
原创 TCP keep-alive机制
keep-alive顾名思义是tcp连接保持连接活跃状态的一种机制,在QNX系统中, 有3个参数与之相关,分别是:net.inet.tcp.keepidle=3。
2024-03-13 15:54:18
781
原创 strcpy()函数崩溃解决
2、char * 类型的value一开始指向了一块字符串常量(“test”),本质上指向的是字符串常量第一个字符的地址,并未分配内存,因此调用带内存操作的strcpy()方法时会崩溃。3、char [50] value将value定义为长度为50的数组,本质上给value分配了一段连续分配的地址。今天在运行如下代码时出现了崩溃现象,定位到时strcpy()函数崩溃。1、strcpy()函数只对已分配内存的字符串变量有效。
2024-03-05 16:44:15
545
原创 以太网基础知识——PHY,MAC,MII,switch
在以太网开发中,常常会听到一些专业名词,例如PHY,MAC,MII,switch,下面是解释。
2023-09-03 14:10:02
6577
原创 Wireshark的Window,Calculated window size,Window size scaling factor
3.所以window size value表示报文的值,calculated window size表示放大后的值,也就是实际可用的值,由于TCP的头部窗口字段只有16bit,最多表示64k(65535),为了表示更大的窗口,使用了可选的放大倍数。1.在TCP三次握手的时候在SYN或SYN,ACK包中,通知options可选信息,告知对方将使用放大倍数。之后抓包发现,首次握手连接的SYN包的win大小依旧是65535(默认值),之后的包中的win会变大。然后通过点击包的详情,发现如下。
2023-03-23 14:40:27
4357
2
原创 安卓HAL开发指南
安卓HAL开发指南1、介绍HIDL的全称是HAL interface definition language(硬件抽象层接口定义语言),在此之前Android 有AIDL,架构在Android binder 之上,用来定义Android 基于Binder通信的Client 与Service之间的接口。HIDL也是类似的作用,只不过定义的是Android Framework与Android HAL实现之间的接口。2、实现方式2.1 旧版传统HAL层Android 7.x和更早的版本中,hal
2022-05-25 17:06:34
13487
1
原创 wireshark的简单使用
1、wireshark介绍(1)、使用wireshark打开一个pcap文件时,可以讲time改变成实际时间(2)、数据过滤<1>、点击表头即可按照此条件排序(默认按照No.排序)<2>、使用过滤器使用Ctrl + F 快捷键,选择字符串,即可搜索(3)、一些小tips<1>、左侧实线表示一次会话的不同阶段<2>、√ 表示对应的请求/响应<3>、数据包大致结构链路层网络层传输层<4>、左侧小圆
2022-05-12 21:49:26
7366
原创 TCP/IP的层次结构及数据封装过程
1.什么是协议分层??拿打电话举个栗子:当我们在打电话的时候不同的地区有不同的语言,而不同地方的人进行通话时我们就形成了同一种语言–普通话这就是我们的语言协议;而在通信设备层,我们进行打电话的过程中通信设备读取数据就会有电话协议,实现相互交流;因此协议分层实质就是一种协议封装;对服务,接口,协议进行明确的划分,形成标准,便于使用;在这个例子中, 我们的协议只有两层;但是实际的网络通信会更加复杂, 需要分更多的层次;分层最大的好处在于 “封装” 。2.IOS七层参考模型:(1)什么是IOS七层参考模
2022-05-09 23:38:04
7863
原创 在gerrit上cherry pick多笔提交到一个仓库中
我们的要求是在dvr_service仓库上从其他分支cherry pick 两笔提交到release/b03chn_rel_sop_3_nobo分支这两笔提交分别如图所示如图所示,B02-5746的提交顺序在V35-68464前面所以我们先cherry pick B02-5746再cherry pick V35-68464点击CHERRY PICK按钮后出现了代码冲突这是正常的,因为是在同一笔仓库中提交了2笔,而前一笔还未入库,后一笔必然与前一笔冲突解决方法是将后一笔的base co
2022-04-26 00:31:22
4172
2
原创 Oracle VM VirtualBox虚拟机安装教程
文章目录前言一、Oracle VM VirtualBox在本文中的用途二、安装步骤1.准备2.使用Oracle VM VirtualBox设置虚拟机配置总结前言Oracle VM VirtualBox 是全球广受欢迎的开源跨平台虚拟化软件。使用该软件,开发人员能够在一台设备上运行多个操作系统,更快地交付代码。IT 团队和解决方案提供者可以使用 VirtualBox 来降低运营成本,缩短在本地和云端安全部署应用所需的时间。一、Oracle VM VirtualBox在本文中的用途用于编译gstre
2022-04-09 17:06:21
22320
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅