网络编程
文章平均质量分 89
charlie114514191
我是一个普通的嵌入式软件程序员,喜欢研究Linux(应用层跟内核从都有粗浅的涉略),单片机,操作系统和计算机体系架构等内容,目前是一枚普通的本科生。
笔者是一个朴素的开源主义者,我坚信代码和知识没有壁垒,也不应该有壁垒所在,任何人都应该平等的获取到所有的知识。笔者力所能及的将自己的代码项目开源到Github
笔者的github:https://github.com/Charliechen114514
笔者的私人博客(旧):https://charliechen114514.github.io/
笔者的私人博客(新):https://www.charliechen114514.tech/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计自己的小传输协议 状态机解析与封装抽象
本文介绍了一个自定义数据传输协议的状态机实现方案。通过C++类DataProtocolizedController封装了协议的核心逻辑,使用状态机模式处理数据包的解析与封装。该协议支持文件传输功能,包含起始帧、数据帧和结束帧三种类型,实现了分块传输、进度反馈和错误处理机制。协议头部定义了文件ID、偏移量、总大小等元信息,并支持文件名传输。代码展示了如何通过状态转换(ReadingHeader/ReadingName/ReadingData)逐步解析接收到的数据,同时提供了发送各类数据帧的接口方法。该设计具有原创 2025-07-26 14:21:03 · 391 阅读 · 0 评论 -
设计自己的小传输协议 导论与概念
本文介绍了自定义网络传输协议的设计要点,重点讨论了协议头结构和CRC校验机制。在协议头设计方面,作者提出了7个关键原则,包括简洁高效、必要元数据、长度管理、字节序统一、完整性校验、可扩展性和安全防护。作者展示了一个紧凑的协议头结构设计示例,采用32位magic number、版本号、状态标识等字段,并详细说明了状态机设计。在CRC校验部分,文章讲解了CRC的基本原理和工作流程,包括模2除法的特点、计算示例以及CRC-32的高效查表法实现,为数据传输提供可靠的错误检测机制。原创 2025-07-26 14:07:14 · 777 阅读 · 0 评论 -
快速入门Socket编程——封装一套便捷的Socket编程——封装接口
本文介绍了一个基于Reactor模式的Socket编程封装框架,采用C++实现跨平台网络通信。核心设计包括: 异步回调机制 - 通过ServerWorkers和ClientWorker结构体封装各种回调函数(连接建立、数据接收、关闭处理等),实现业务逻辑与网络层的解耦 pImpl惯用法 - 使用接口类(ServerSocketInterface/ClientInterface)隐藏平台相关实现(ServerSocket/ClientSocket),通过unique_ptr自动管理资源 Reactor模式 -原创 2025-07-25 10:50:47 · 517 阅读 · 0 评论 -
快速入门Socket编程——封装一套便捷的Socket编程:基于Epoll的框架思路说明
Socket编程与Epoll框架摘要 本文详细介绍了Linux下基于epoll的高性能Socket编程框架。epoll作为I/O多路复用机制,相比select/poll具有O(1)事件查询优势,适用于高并发场景。文章从epoll原理、API使用、触发模式(LT/ET)到非阻塞设置等核心概念进行剖析,并提供了事件循环的典型写法及常见工程实践要点。 在实现层面,框架分为配置、监听、epoll初始化和事件循环四个阶段:1)配置阶段完成协议参数映射;2)监听阶段创建socket并绑定端口;3)epoll初始化设置非原创 2025-07-25 10:43:37 · 1301 阅读 · 0 评论 -
快速入门Socket编程——封装一套便捷的Socket编程——Reactor
本文介绍了Socket编程中的Reactor和Proactor两种设计模式。Reactor是一种基于事件驱动的同步I/O模型,通过epoll等机制监听多个I/O句柄,在事件就绪时分发给对应处理器。文章详细说明了Reactor的工作流程、核心组件及特点,并提供了示例代码片段。作为对比,Proactor是异步I/O模型,内核完成I/O操作后通知应用程序。最后分析了两种模式的差异,并解释了项目中选用Reactor的原因,主要由于Linux平台epoll的成熟性和高效性。文章为理解高性能网络编程提供了清晰的技术框架原创 2025-07-25 10:33:52 · 795 阅读 · 0 评论 -
快速入门Socket编程——封装一套便捷的Socket编程——导论
本文介绍了Socket编程的核心流程与关键API,包括socket创建、bind端口绑定和listen监听设置。重点讲解了socket()函数中domain、type和protocol参数的含义,bind()函数中sockaddr结构体的使用及字节序转换问题,以及listen()函数中backlog参数对连接队列的影响。文章还提供了避免端口绑定冲突的SO_REUSEADDR技巧,为后续封装Socket编程接口奠定了基础。原创 2025-07-25 09:38:00 · 1177 阅读 · 0 评论 -
网络编程系列:C++使用Linux的API快速获取网卡信息(AddressInfo)
本文介绍了在Linux系统下使用C++获取网卡信息的方法,重点解析了getifaddrs()和freeifaddrs()这两个API的使用。文章详细讲解了struct ifaddrs结构体的各个成员,包括链表指针ifa_next、接口名称ifa_name、标志位ifa_flags、IP地址ifa_addr、子网掩码ifa_netmask以及广播/点对点地址等。最后提供了一个示例代码,展示如何遍历网卡信息链表并获取IP地址等网络接口信息。该技术可用于开发网络库或网络监控工具,是网络编程的基础知识。原创 2025-07-23 08:45:54 · 768 阅读 · 0 评论
分享