logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux网络编程(十):自定义协议与网络计算器

本文深入探讨了网络编程中自定义协议的设计与实现。通过开发网络计算器项目,作者系统性地解决了TCP字节流传输中的粘包和半包问题,提出了一套完整的应用层协议解决方案。文章详细阐述了协议设计的关键要素:1) 采用"长度报头+分隔符"的报文格式确保边界清晰;2) 实现序列化/反序列化机制处理结构化数据;3) 模块化架构分离网络传输、协议解析和业务逻辑。项目采用C++实现,结合JsonC

文章图片
#网络#服务器#tcp/ip +1
Linux网络编程(九):应用层协议与序列化

本文深入探讨了网络编程中应用层协议与序列化的核心概念。首先解析了协议的本质是计算机间的标准化约定,确保数据能被正确解析。文章重点介绍了JSON作为应用层协议载体的优势,包括跨语言支持和可读性,并详细讲解了JsonCpp库的使用方法,涵盖动态构造、类型检查、序列化等关键操作。通过全双工通信模型的阐述,揭示了TCP内核缓冲区如何实现高效双向数据传输。最后,文章对比了新旧API的差异,展示了现代工业级序

文章图片
#网络#服务器#运维 +1
Linux网络编程(八):基于TCP实现CommandServer

本文介绍了如何构建一个TCP CommandServer(远端命令执行服务器),实现客户端通过网络发送指令并在服务端执行的功能。文章首先分析了EchoServer的局限性,指出网络服务的核心价值在于驱动业务逻辑。随后详细阐述了CommandServer的整体架构设计,包括网络引擎层、异步任务并发层和命令执行层的模块划分。重点讲解了Command模块的实现,通过popen系统调用执行命令并捕获输出,

文章图片
#网络#linux#tcp/ip +1
Linux网络编程(六):UDP聊天室与线程池

为了打破 "一问一答" 的局限,我们需要构建一个真正的群聊多点广播模型从 "无状态" 到 "有状态": 服务端在内存中必须引入一个在线用户管理表。任意一个客户端首次向服务器发送消息时,服务端需要捕捉其 sockaddr_in 地址,判定其为新用户上线,并将其身份记录在表中全员广播: 当任何一个在线用户向服务器发送一条聊天消息时,服务端在接收到数据后,不再只是单线回复。而是会遍历整个在线用户管理表,

文章图片
#udp#网络#linux +1
Linux网络编程(六):UDP聊天室与线程池

为了打破 "一问一答" 的局限,我们需要构建一个真正的群聊多点广播模型从 "无状态" 到 "有状态": 服务端在内存中必须引入一个在线用户管理表。任意一个客户端首次向服务器发送消息时,服务端需要捕捉其 sockaddr_in 地址,判定其为新用户上线,并将其身份记录在表中全员广播: 当任何一个在线用户向服务器发送一条聊天消息时,服务端在接收到数据后,不再只是单线回复。而是会遍历整个在线用户管理表,

文章图片
#udp#网络#linux +1
Linux网络编程(五):基于UDP实现DictServer

本文介绍了基于UDP协议实现的网络词典服务器(DictServer)的设计与实现。相比简单的EchoServer,DictServer引入了实际业务逻辑,通过集中式词典服务解决了单机程序的数据冗余和更新维护问题。文章详细阐述了系统架构设计,包括使用UDP协议的优势、词典数据模块的哈希表实现、服务端与业务逻辑的解耦设计(通过回调函数机制),以及完整的客户端-服务端交互流程。测试结果表明,该系统能正确

文章图片
#网络#linux#udp +1
Linux线程(三):线程同步、互斥与生产者消费者模型

Mutex(全称 Mutual Exclusion)是一种用于保护临界资源的硬件/软件原语。它像是一把 "锁",在任意时刻,只允许一个执行流持有这把锁锁的特性:如果一个线程尝试获取已被其他线程持有的锁,该线程将被挂起(阻塞),直到锁被释放粒度:Mutex 保护的是代码路径(临界区),通过限制对代码的访问来间接保护数据综上所述,从共享资源、临界区、原子性,到互斥锁、条件变量以及生产者消费者模型,我们

文章图片
#开发语言#linux#服务器
Linux线程(一):线程概念与地址空间本质

在传统的操作系统教材中,线程通常被定义为执行流的最小单位,而进程是资源分配的最小单位。但这个定义过于抽象历史背景与逻辑复用在早期的 UNIX 时代,系统里只有进程。如果你想让一个程序同时干两件事(比如一边下载一边播放),你必须 fork 一个子进程。但 fork 的代价是巨大的:它需要复制一份完整的页表、文件描述符表、信号处理逻辑等Linux 的开发者在设计线程时,并没有像 Windows 或 S

文章图片
#开发语言#linux#操作系统
Linux信号机制(三):中断、调度与系统调用

综上所述,从硬件中断到时钟中断,再到系统调用与软中断机制,我们逐步理解了操作系统是如何真正“运行起来”的:外设通过中断打断 CPU,CPU 借助 IDT 跳转到对应的中断处理例程,内核再通过调度器重新分配执行资源,最终完成从用户态到内核态、再返回用户态的整个闭环。与此同时,无论是 int 0x80、sys_call_table,还是时钟中断触发的 schedule,本质上都说明了一件事:操作系统并

文章图片
#linux#运维#服务器
Linux库制作与使用(三):ELF加载与动态链接机制

综上所述,从 ELF 文件中的虚拟地址,到进程创建时 mm_struct 与 vm_area_struct 的构建,再到动态链接器对共享库的加载与 GOT / PLT 的地址修正,我们逐步串联起了程序从磁盘文件到运行进程的完整链路。程序之所以能够被正确执行,本质上依赖于操作系统对地址空间、页表映射以及动态链接机制的统一管理与此同时,我们也进一步理解了:代码区之所以能够保持只读,是因为动态链接并不会

文章图片
#linux#运维#服务器
    共 18 条
  • 1
  • 2
  • 请选择