- 博客(19)
- 收藏
- 关注
原创 TCP客户端Linux网络编程设计详解
本文介绍了TCP客户端的设计流程,主要包括三个核心步骤:首先通过socket()函数初始化套接字,指定协议族和套接字类型;然后使用connect()函数连接服务器,包含错误处理机制;最后详细说明了数据发送(write()/send())和接收(read()/recv()/recvfrom())的函数原型及使用方法。文中提供了完整的TCP客户端示例代码,展示了从创建套接字、建立连接到数据通信的完整流程,并包含错误处理机制。该内容为网络编程中TCP客户端开发提供了基础指导。
2025-08-13 20:49:27
832
原创 TCP服务器Linux网络编程设计流程详解
本文详细介绍了TCP服务器的设计流程与关键函数实现。服务器程序设计主要分为七个步骤:1)使用socket()创建套接字;2)bind()绑定端口;3)listen()设置监听;4)accept()接受连接;5)read()/recv()接收数据;6)write()/send()发送数据;7)close()关闭连接。文中详细说明了各系统调用的函数原型、参数含义及使用示例,包括socket地址结构、字节序转换函数等核心技术点。最后提供了一个完整的线程化TCP服务器代码示例,演示了如何通过多线程处理多个客户端连接
2025-08-12 10:25:11
870
原创 用户数据报协议UDP
UDP是一种无连接的不可靠传输协议,适用于实时应用如视频会议和IP电话。其特点是不保证数据可靠传输,但支持单播、多播和广播。单播应用包括DNS解析和大文件传输;多播用于视频会议等场景;广播则用于ARP数据报。UDP包大小可达64k,但因MTU限制通常控制在1k左右,避免因分片错误导致整个数据包丢失。
2025-08-07 21:14:07
440
原创 TCP协议可靠传输的实现
摘要:TCP协议通过分段传输(基于MSS)、超时重传、CRC校验和、流量控制(滑动窗口机制)确保可靠数据传输。其中,滑动窗口采用累计应答方式提升效率,通过动态调整窗口大小实现流量控制,并引入持续计数器处理零窗口情况。该机制允许发送方根据接收方的处理能力动态调整发送速率,通过窗口滑动和重传机制保证数据有序可靠传输,同时有效避免了网络拥塞。(150字)
2025-08-07 20:59:58
449
原创 IP协议的数据报解析与传输
本文介绍了IP协议的基本概念和IP数据报的发送转发过程。IP协议在网络层封装数据为IP数据报,其首部包含版本、长度、标识等字段,用于分片、路由和差错检测。IP数据报的发送分为直接交付(同一网络)和间接交付(不同网络)。主机通过子网掩码判断目的主机是否在同一网络,若不在则通过默认网关(路由器)转发。路由器检查数据报首部后,根据路由表匹配条目进行转发或丢弃。文中还通过具体网络示例说明了默认网关的设置和路由器的转发机制。
2025-08-05 09:41:04
607
原创 TCP的“三次握手”与“四次挥手”全解析
TCP连接管理包括三次握手建立连接和四次挥手释放连接。三次握手通过SYN和ACK报文确保双方可靠建立连接,防止历史连接导致资源浪费。四次挥手通过FIN和ACK报文实现双向连接的可靠释放,其中客户端需要等待2MSL时间以确保服务器收到最终确认。整个过程解决了通信双方的存在确认、参数协商和资源分配问题,并通过特定状态转换保证连接的可靠建立和释放。两次握手无法避免失效连接请求问题,因此必须采用三次握手机制。
2025-07-31 09:18:01
1963
原创 解析TCP协议:网络通信的基石
TCP协议是传输层核心协议,通过三次握手建立连接、四次挥手终止连接,确保可靠传输。其核心机制包括:序列号/确认号实现数据有序传递;校验和检测数据完整性;滑动窗口控制流量;拥塞控制算法动态调整发送速率。TCP将数据视为字节流,不保留消息边界,通过确认应答和超时重传保证可靠性,成为HTTP、FTP等应用协议的传输基础。这些特性使TCP成为互联网可靠通信的关键保障。
2025-07-30 09:40:33
614
原创 HTTP协议:请求、版本与报文格式
HTTP协议是浏览器与服务器通信的基础规范。HTTP/1.0采用非持续连接,每个请求需建立独立TCP连接,导致效率低下;HTTP/1.1改进为持续连接,支持流水线工作模式,显著提升传输效率。HTTP报文采用文本格式,包含请求方法、请求头(如Connection、User-Agent等)和状态码。协议本身无状态,通过Cookie实现状态保持。常见状态码分为200(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)四类,用于标识请求处理状态。
2025-07-29 09:20:27
404
原创 Linux进程间通信(IPC)的通信方式
本文介绍了Linux系统中五种主要的进程间通信(IPC)方式:信号、管道、消息队列、共享内存和信号量。信号是轻量级的异步通知机制,用于简单事件提醒;管道提供单向字节流通信,常用于有亲缘关系的进程;消息队列支持结构化消息的双向传输;共享内存具有最高性能但需要额外同步机制;信号量则主要用于进程间的同步控制。文章详细分析了每种方式的特点、适用场景及优缺点,并比较了它们在数据传递方式、性能表现和同步需求等方面的差异。其中,共享内存速度最快但同步复杂,管道和消息队列相对简单但性能较低,信号仅用于通知,信号量专注于同步
2025-07-23 21:25:04
714
原创 二分查找法详解与C语言实现(递归与非递归)
本文介绍了二分查找法的原理、时间复杂度及C语言实现。二分查找法适用于有序数组,通过不断将查找范围缩小一半来快速定位目标元素,时间复杂度为O(logn)。文章详细讲解了递归和非递归两种实现方式:递归实现通过mid值比较不断缩小搜索区间;非递归实现则通过循环调整start和end指针。最后给出了包含两种实现方式的完整C语言代码示例,演示了如何查找数组中的指定元素。二分查找法是一种高效的查找算法,特别适用于大规模有序数据集的快速检索。
2025-07-07 09:50:21
815
原创 从理论到代码:彻底掌握冒泡、选择、插入排序
从理论到实战:拆解冒泡/选择/插入排序的交换逻辑,时间复杂度和稳定性特征,附可直接运行的C语言代码(含关键注释),快速掌握手写排序能力
2025-07-03 21:56:57
907
原创 C语言双向链表全实现:插入/删除/遍历核心操作与时间复杂度分析
摘要:双向链表通过前驱/后继指针实现高效双向遍历。本文详解C语言实现:结构体设计、头尾插入、指定位置操作、有序插入与删除,扩展带信息结点与循环链表变体,分析时间复杂度并附完整代码。
2025-06-30 21:09:27
635
原创 C语言单向链表全解析:12大核心操作+3大高频笔试题
摘要:本文详细介绍了链表的基本概念及其C语言实现。主要内容包括:1. 链表的基本概念,区分单向链表和双向链表;2. 单向链表的具体实现,包括初始化、头插/尾插法、查找、删除、插入等核心操作;3. 单向循环链表的实现原理;4. 常见笔试题解法:链表反转(使用双指针)、查找中间节点(快慢指针)、判断环(快慢指针相遇法)。文章通过完整代码展示了链表的各项功能实现,并提供了详细注释,对理解链表数据结构及其操作具有实用参考价值。
2025-06-30 16:10:19
1717
原创 数据结构基础:线性表与顺序表详解(C语言实现)
摘要:线性表的基本概念及其顺序存储结构。线性表作为最简单的数据结构,具有一对一的前驱后继关系,主要分为顺序表和链表两种存储方式。文章重点讲解了顺序表的C语言实现,详细阐述了顺序表的结构体定义(包含数据容器、长度和容量三个要素),并提供了初始化、输出、取值、查找、销毁、删除、扩容和插入等10个核心操作的完整代码实现。通过时间复杂度分析指出:顺序表的元素获取为O(1),而插入删除操作需要移动元素,时间复杂度为O(n)。代码示例展示了顺序表从初始化到各种操作的完整流程,
2025-06-30 10:40:16
560
原创 图结构基础入门:核心概念、存储方式与遍历算法
摘要:图用于表示实体间复杂关系。理解图需掌握其核心概念(顶点、边、方向、权重、度)。存储图常用邻接矩阵(适合稠密图)和邻接表(节省空间)。访问图的所有顶点依赖于基础遍历算法:深度优先搜索(DFS) 沿分支深入探索,而广度优先搜索(BFS) 则逐层扩展。掌握这些是图算法应用的基石。本文介绍图的基础概念、存储与遍历方法。
2025-06-27 19:52:42
758
原创 基于散列技术的高效数据结构--哈希表
摘要:本文系统介绍了哈希表的原理、构造方法和冲突解决方案。哈希函数构造需遵循计算简单、分布均匀原则,常用方法包括直接定址法、除留余数法等。哈希冲突可通过开放寻址法、链地址法等解决。哈希表广泛应用于编译器符号表、数据库索引、文件校验、海量数据处理等场景,其O(1)时间复杂度特性使其成为高效查找的重要工具。文章还探讨了分布式环境下利用哈希表处理超大规模数据的设计思路。
2025-06-26 19:58:06
1641
原创 基础入门:平衡二叉树、红黑树、哈夫曼树、B树与B+树
摘要:常见的树形数据结构及其应用。主要内容包括:1)平衡二叉树(AVL树)的概念、平衡因子及4种旋转纠正方式;2)红黑树的基本特性及其在Java集合和Linux系统中的实际应用;3)哈夫曼树的构建方法、哈夫曼编码原理及其数据压缩应用;4)B树和B+树的结构特点、插入操作,重点分析了B+树在数据库索引中的优势。文章通过具体实例详细阐述了各类树结构的操作原理,为理解这些重要数据结构提供了系统性的知识框架。
2025-06-25 22:24:49
834
原创 从根到叶:C语言实现树与二叉树的核心操作
摘要:本文系统讲解树与二叉树的核心概念(基本术语、性质、遍历),重点解析二叉排序树(BST) 的原理、操作(插入、删除)及C语言完整实现。涵盖基础理论到代码实战,助你夯实数据结构基础。
2025-06-24 22:35:35
690
原创 C语言数据结构——队列
摘要:本文详细介绍了队列数据结构及其实现方式。首先阐述了队列的基本概念和FIFO特性,然后重点讨论了顺序队列的实现,包括指针移动、溢出判断等关键问题。针对顺序队列的不足,提出了循环队列解决方案,并给出了详细的代码实现,包括队列初始化、入队、出队、判空判满等核心操作。最后展示了完整的循环队列代码示例,涵盖结构体定义、各功能函数及测试用例。
2025-06-23 21:33:17
1014
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅