- 博客(35)
- 收藏
- 关注
原创 Linux网络编程基础(错误处理)
Linux网络编程中的Socket错误处理是确保程序稳定性的关键。系统调用失败时返回-1并设置errno变量,常见错误包括连接拒绝(ECONNREFUSED)、超时(ETIMEDOUT)、资源不足(EAGAIN)等。核心处理策略包括:立即检查errno值,使用perror()输出错误信息;区分可恢复(EAGAIN/EINTR)和不可恢复错误(EPIPE);设置SO_REUSEADDR等socket选项增强健壮性;实现优雅关闭连接机制。通过系统性地理解错误码、合理分类错误类型并实现重试机制,可显著提升网络程序
2026-05-25 00:05:13
577
原创 Linux网络编程基础(IO多路复用)
IO多路复用技术是现代高性能网络编程的核心,它通过单线程监控多个文件描述符状态,解决了传统IO模型在高并发场景下的性能瓶颈。文章详细介绍了三种主流实现机制:select(早期方案,存在性能限制)、poll(改进select但仍有不足)和epoll(Linux特有,最高效)。重点分析了epoll的工作原理、优势(无数量限制、事件驱动、高效通知)和使用示例,并提供了性能优化策略。该技术广泛应用于Nginx、Redis等高并发服务器,是构建高性能网络应用的关键。
2026-05-24 23:57:17
326
原创 Linux网络编程基础(UDP socket编程)
UDP协议是一种无连接的传输层协议,具有低延迟、简单高效的特点,适用于实时应用场景。摘要要点:1)UDP核心特性包括无连接、不可靠传输、面向数据报和低延迟;2)编程模型简单,服务器端只需创建套接字、绑定地址和收发数据;3)关键API包括socket()、bind()、sendto()和recvfrom();4)与TCP相比,UDP不保证可靠性但效率更高;5)适用于流媒体、在线游戏等对实时性要求高的场景。文中还提供了完整的UDP服务器和客户端代码示例。
2026-05-24 23:52:52
377
原创 Linux网络编程基础(TCP socket编程)
本文详细介绍了TCP Socket编程的核心技术与实现方法。主要内容包括:1)TCP编程的C/S模型及服务器/客户端流程;2)socket()、bind()、listen()等关键API函数详解;3)完整的回显服务器和客户端代码示例;4)地址结构体初始化、粘包处理等注意事项;5)编译运行方法。文章系统讲解了从基础套接字创建到数据收发的完整过程,为开发可靠的网络通信程序提供了实用指导。
2026-05-24 23:49:12
341
原创 Linux网络编程基础(socket选项)
本文系统介绍了Socket编程中的选项设置机制,重点解析了setsockopt()和getsockopt()函数的使用方法。内容涵盖不同协议层级的选项分类(SOL_SOCKET、IPPROTO_TCP等),详细说明了SO_REUSEADDR、TCP_NODELAY等常用选项的功能参数及典型应用场景,包括地址复用、缓冲区设置、超时控制等。文章还提供了高性能服务器配置模板,分析了常见问题的解决方案,并强调了跨平台开发的注意事项。通过合理配置Socket选项,开发者可以优化网络应用的性能、稳定性和可用性。
2026-05-24 23:37:41
401
原创 Linux网络编程基础(地址结构)
本文详细介绍了Linux网络编程中的Socket地址结构体系。主要内容包括:1)通用Socket地址结构sockaddr和sockaddr_storage的作用;2)IPv4/IPv6/UNIX域专用地址结构的具体定义和使用方法;3)主机字节序与网络字节序的转换原理及函数;4)IP地址转换函数的分类与推荐用法;5)典型地址结构初始化示例。文章强调在实际编程中应使用专用地址结构进行设置,并通过强制类型转换传递给API,同时必须正确处理字节序和地址格式转换。
2026-05-24 23:33:46
325
原创 Linux网络编程基础(socket编程)
Socket是网络通信中应用程序进程间双向通信的端点抽象,由IP地址和端口号唯一标识。主要分为流式套接字(TCP)、数据报套接字(UDP)和原始套接字三种类型。采用客户端/服务器模式,服务器端通过socket()、bind()、listen()、accept()等核心API建立连接,客户端通过connect()发起请求。编程中需注意地址结构体转换、网络字节序处理,Windows环境还需WSAStartup初始化。Socket广泛应用于Web服务、即时通讯、物联网等领域,是网络编程的基础技术。
2026-05-24 23:29:34
352
原创 计算机网络基础(Https协议详解)
HTTPS是HTTP的安全版本,通过在HTTP上叠加SSL/TLS加密层,为网络通信提供机密性、完整性和身份认证保障。其核心机制包括:混合加密体系(非对称加密协商密钥+对称加密传输数据)、数字证书验证身份、消息认证码确保完整性。TLS1.3优化了握手流程,减少延迟并增强安全性。部署HTTPS需获取证书并正确配置服务器,虽然存在性能开销和证书管理挑战,但已成为现代网站的必备安全措施。随着HTTP/2/3的普及,全站HTTPS正成为互联网新标准。
2026-04-27 22:20:56
798
原创 计算机网络基础(Http协议详解)
HTTP协议是互联网数据传输的基础协议,采用客户端/服务器模型实现请求-响应式通信。该协议通过格式化报文进行交互,包含请求方法、状态码等核心机制,具有无连接、无状态的特点。从HTTP/0.9到HTTP/3,协议持续演进优化性能与安全,包括引入持久连接、二进制分帧、QUIC协议等创新。HTTPS通过TLS加密保障通信安全。HTTP协议的设计演进反映了互联网技术的发展历程,对Web开发和网络优化具有重要意义。
2026-04-27 22:19:17
543
原创 计算机网络基础(FTP协议详解)
FTP协议是互联网最早的文件传输标准,采用客户端/服务器架构和独特的双连接设计(控制连接21端口+数据连接)。其主动模式(PORT)和被动模式(PASV)分别适应不同网络环境,后者更适合现代防火墙配置。FTP支持匿名访问和用户认证,提供ASCII/二进制两种传输模式。然而其明文传输的安全缺陷促使FTPS、SFTP等加密协议逐步替代传统FTP。尽管存在安全隐患,理解FTP的核心机制对维护遗留系统仍具价值,但新建项目建议采用更安全的现代传输方案。
2026-04-27 22:11:55
347
原创 计算机网络基础(网络调试)
命令是网络诊断中最基础、最核心的工具,它通过发送 ICMP(Internet Control Messages Protocol)回显请求报文并等待目标主机的 ICMP 回显应答,来测试两台网络设备之间的连通性、测量网络延迟(时延)并统计丢包率。该命令内置于Windows、Unix和Linux等主流操作系统中,是网络管理员、IT技术人员乃至普通用户排查网络故障的首选。 命令的真正威力在于其丰富的参数,允许用户进行定制化测试。以下是一些最常用和实用的参数:traceroute - 追踪网络路径(在W
2026-04-27 22:01:21
810
原创 计算机网络基础(UDP协议详解)
UDP是一种无连接的传输层协议,具有高效简单但不可靠的特点。它不保证数据顺序和完整性,适用于实时性要求高的场景如音视频传输、在线游戏等。UDP头部仅8字节,包含源/目标端口、长度和校验和字段。相比TCP,UDP没有连接建立、确认重传等机制,因此传输延迟更低但可靠性较差。常见的基于UDP的应用层协议包括DNS、TFTP、SNMP和NTP等。UDP特别适合需要快速传输且能容忍少量丢包的应用场景。
2026-04-27 00:22:26
226
原创 计算机网络基础(TCP协议详解)
TCP协议是一种可靠的、面向连接的传输协议,通过三次握手建立连接和四次挥手终止连接。其核心机制包括:1)序号确认和重传机制保证可靠性;2)滑动窗口实现流量控制;3)拥塞控制算法(慢启动、拥塞避免、快速重传和恢复)优化网络性能。三次握手确保双方同步初始序列号并验证连接可用性,而四次挥手则保证双向数据流都能完整关闭。TCP还通过检验和、连接管理、超时重传等技术确保数据传输的完整性。常见问题包括SYN攻击、粘包拆包处理等,可通过SYN Cookie、固定消息长度等方法解决。
2026-04-26 23:46:20
459
原创 计算机网络基础(ARP协议详解)
ARP协议是TCP/IP中用于将IP地址解析为MAC地址的核心协议,通过广播请求和单播响应实现局域网内的地址映射。其工作流程包括查询缓存、广播请求、匹配响应和更新缓存四个步骤。ARP缓存具有时效性,支持动态和静态条目。重要扩展包括跨网段解析的ARP代理和用于冲突检测的免费ARP。由于缺乏认证机制,ARP易受欺骗攻击,需采取静态绑定等防护措施。在LwIP协议栈中,ARP作为链路层与网络层的桥梁,通过核心函数实现地址解析功能。该协议是网络通信的基础,采用高效的广播/单播机制平衡了解析效率与带宽占用。
2026-04-26 22:42:29
419
原创 计算机网络基础(IP协议详解)
主机:是配有IP地址, 但是不进行路由控制的设备;路由器:即配有IP地址, 又能进行路由控制;节点:主机和路由器的统称;
2026-04-17 23:25:23
269
原创 计算机网络基础(TCP/IP体系结构)
TCP/IP协议是互联网的核心通信标准,采用分层架构设计。标准四层模型包括:网络接口层(处理物理传输)、网际层(IP寻址和路由)、传输层(端到端通信)和应用层(用户接口)。教学常用五层模型将接口层拆分为数据链路层和物理层,便于与OSI模型对比。该模型强调实际应用,与OSI的理论框架不同:TCP/IP更简洁(4-5层vs7层),下层为上层服务,各层通过协议交互。典型通信流程展示数据从应用层到物理层的封装,以及接收方的反向解封装过程,体现分层协作的网络通信机制。
2026-04-16 23:24:19
423
原创 计算机网络基础(OSI体系结构)
OSI(开放式系统互联)七层模型是ISO制定的网络通信标准框架,包含物理层(比特流传输)、数据链路层(可靠帧传输)、网络层(路由选择)、传输层(端到端通信)、会话层(会话管理)、表示层(数据格式处理)和应用层(用户服务)。该模型通过分层设计实现设备互通,具有标准化和模块化优势,但因理论化过重、实现复杂,实际网络更多采用简化的TCP/IP模型。OSI模型虽应用有限,仍是理解网络通信原理的重要理论基础。
2026-04-16 23:18:01
426
原创 Makefile自动化构建
摘要:Makefile是用于自动化构建的脚本文件,主要由目标、依赖项和命令组成。核心功能包括:1) 基本语法结构定义编译规则;2) 自动变量($@、$<等)简化规则编写;3) 隐式规则自动处理常见编译任务;4) 变量定义提高可维护性;5) 伪目标实现清理等操作;6) 通配符函数批量处理文件;7) 支持头文件和库路径指定;8) 嵌套执行实现模块化管理。Make通过时间戳检查依赖关系,仅重新编译修改过的文件,提高大型项目构建效率。
2026-04-16 23:03:15
380
原创 Linux C编程基础知识(内存操作)
本文介绍了C语言中常用的内存管理函数及其特性:malloc用于基础堆内存分配,不初始化内存内容;calloc在分配内存时自动初始化为零;realloc用于调整已分配内存块的大小;free用于释放堆内存。此外还讲解了memset内存初始化、memcpy/memmove内存拷贝、memcmp内存比较等操作函数,以及alloca栈内存分配和mmap/munmap内存映射机制。最后简要提及内核开发专用的kmalloc/kfree函数。这些函数构成了C程序内存管理的核心工具集,合理使用对程序性能和稳定性至关重要。
2026-04-15 22:58:47
414
原创 Linux C编程基础知识(文件目录操作)
本文系统介绍了C语言文件操作API和Linux系统调用API。标准C库部分详细说明了文件流操作函数(fopen、fclose、fread/fwrite等)的使用方法、参数说明和返回值处理,重点讲解了不同打开模式的区别。Linux系统调用部分对比介绍了基于文件描述符的底层操作(open/close/read/write等),包括权限设置和指针定位。此外还涵盖了目录操作(mkdir/rmdir/opendir等)、文件属性获取(stat结构体解析)和权限判断等实用功能。全文通过函数原型、参数说明、返回值和应用场
2026-04-15 22:52:25
402
原创 基于Linux C并发编程实现简单线程池
本文介绍了Linux环境下线程池的实现原理与关键组件。线程池通过预先创建工作线程和管理任务队列,有效减少线程创建销毁的开销。核心组件包括线程池管理器、工作线程、任务队列和同步机制(互斥锁与条件变量)。实现步骤分为初始化、添加任务、工作线程循环和销毁四个阶段,重点讲解了生产者-消费者模型的安全实现方式。文章还探讨了高级优化方案如动态扩缩容、C++封装等,并提供了完整的C语言实现示例代码,展示了从任务提交到线程执行的全过程。该线程池模型适用于处理大量短耗时任务,能显著提升系统性能。
2026-04-15 22:40:21
370
原创 Linux C并发编程基础(线程安全)
Linux线程安全的核心在于通过同步与互斥机制确保多线程环境下共享资源的正确访问。文章系统阐述了线程不安全的原因(数据竞争、非原子操作)及四种关键解决方案:互斥锁实现排他性访问,条件变量完成线程协作,自旋锁优化短临界区性能,读写锁提升多读场景效率。重点剖析了信号量机制,详细对比了其与互斥锁的适用场景,并通过生产者-消费者模型等典型案例演示线程安全实践。最后强调开发中需避免死锁、最小化锁作用域、统一获取顺序等最佳实践,为构建高并发程序提供完整的方法论指导。
2026-04-12 17:13:48
474
原创 Linux C并发编程基础(线程管理)
本文系统介绍了线程的核心概念与Linux实现机制。线程是程序执行的最小单元,共享进程资源但拥有独立栈空间,具有轻量级、高效通信等特点。Linux通过轻量级进程(LWP)实现线程,内核视角为独立进程,用户视角通过pthread库封装为线程。文章详细解析了线程ID的双重标识、线程与进程的区别,并全面梳理了pthread库的核心接口,包括线程创建、等待、退出、分离等操作,以及线程取消和清理机制。这些内容为深入理解多线程编程提供了理论基础和实践指导。
2026-04-12 16:40:26
299
原创 Linux C并发编程基础(进程间通信)
本文系统介绍了Linux系统下常见的进程间通信(IPC)机制,包括管道(匿名/命名)、消息队列、共享内存、信号、本地Socket和信号量等。详细分析了各类IPC的核心特性、适用场景、API使用方法及实现原理,通过具体代码示例展示了实际应用方式。文章对比了不同IPC机制的优缺点,指出共享内存效率最高但需同步机制配合,管道简单易用但功能有限,本地Socket通用性强但相对复杂。最后提供了选型建议:简单父子进程通信用匿名管道,无亲缘关系进程用命名管道或消息队列,大数据量用共享内存+信号量,异步通知用信号,复杂通信
2026-04-12 16:21:48
387
原创 Linux C并发编程基础(进程管理)
本文介绍了Linux系统中进程管理的核心API,主要包括三个部分:1)进程创建API(fork()、vfork()和exec()系列函数),详细说明了fork()的写时复制机制和返回值特点,以及exec()加载新程序的6种变体;2)进程等待API(wait()和waitpid()),重点解析了如何获取和判断子进程退出状态;3)进程终止API(exit()和_exit()),比较了两者在资源清理方面的差异。文章通过示例代码演示了这些API的使用方法,并总结了Linux进程管理的完整流程:创建→加载→终止→回收
2026-04-06 16:55:09
177
原创 Linux C并发编程基础(进程基础概念)
摘要:本文介绍了Linux进程的几种状态(运行态、可中断等待态、不可中断等待态、僵尸态、停止态)及其转换机制,分析了孤儿进程和僵尸进程的特点及危害,并提出了避免僵尸进程的解决方案。同时详细阐述了守护进程的概念、特点及创建步骤,包括脱离终端控制、创建新会话、改变工作目录等关键操作,为编写后台服务程序提供了实现模型。
2026-04-06 16:33:19
159
原创 Linux C编程基础知识(数学函数与随机数生成)
本文介绍了C语言中常用的数学函数库,包括基本运算(绝对值、幂运算、平方根、取模)、指数对数(自然指数、自然对数、常用对数)、三角函数(正弦、余弦、正切)以及取整函数(向下、向上、四舍五入)等类别。同时说明了随机数生成函数rand()和srand()的使用方法,其中rand()生成伪随机数,srand()用于设置随机数种子。这些函数原型和功能说明为数学计算提供了基础支持,示例结果直观展示了各函数的运算效果。
2026-04-06 16:22:08
30
原创 Linux C编程基础知识(日期与时间操作)
本文介绍了C语言中常用的时间处理API函数及其功能,包括获取时间戳(time)、时间转换(localtime/gmtime)、格式化输出(ctime/asctime/strftime)等。重点讲解了strftime函数的自定义格式化方法,提供了常用格式符说明(如%Y年、%m月等)。通过两个代码示例演示了如何获取当前时间戳并转换为可读格式,以及如何使用strftime实现自定义时间格式输出(如"YYYY-MM-DD HH:MM:SS")。文中还特别提醒了时间结构体字段的注意事项,如年份需加
2026-04-06 16:20:20
45
原创 Linux C编程基础知识(字符串操作)
本文介绍了C语言常用字符串处理函数,分为以下几类:1)长度获取(strlen);2)字符串拷贝(strcpy/strncpy);3)字符串拼接(strcat/strncat);4)字符串比较(strcmp/strncmp);5)字符串查找(strchr/strstr等);6)大小写不敏感处理(strcasecmp等);7)字符串数值转换(atoi/atof等)。重点说明了各函数的安全版本(strncpy/strncat等)的使用方法及其优势,强调了对缓冲区溢出的防范措施,并提供了各函数的原型、参数说明和返回
2026-04-06 16:16:08
131
原创 Linux C编程基础知识(命令行参数)
本文介绍了C语言中命令行参数解析的两种常用接口:getopt和getopt_long。getopt用于解析短选项(如-h),支持必选参数(:)和可选参数(::),通过全局变量optarg获取参数值。getopt_long扩展支持长选项(如--help),通过option结构体定义选项属性,可与短选项联动。两者都支持错误处理和剩余参数获取(optind)。文中提供了完整示例代码,演示了端口参数验证、帮助信息显示等实用功能,并强调了参数安全转换(使用strtol替代atoi)和错误处理的最佳实践。
2026-04-06 09:36:40
41
原创 Linux C编程基础知识(函数可变参数)
C语言可变参数函数实现方法:函数必须至少有一个固定参数作为可变参数的起始位置,通过stdarg.h头文件提供的宏实现。核心宏包括va_list(参数列表指针)、va_start(初始化)、va_arg(获取参数)和va_end(清理)。示例展示了求和函数sum(int n,...)的实现,其中n指定参数个数,...为可变参数列表。函数内部使用这些宏遍历参数并求和,最后调用va_end释放资源。该机制使函数能处理可变数量的参数,增强了灵活性。
2026-04-06 09:32:48
35
原创 Ubuntu 18.04下搭建OpenCV开发环境
本文介绍了OpenCV的安装与配置流程:1)从官网或GitHub下载OpenCV及对应版本的扩展库;2)安装必要的依赖库,若出现问题可添加Ubuntu安全源后重试;3)创建build目录并执行cmake命令编译OpenCV,可选择是否包含扩展模块;4)配置环境变量,修改opencv.conf文件并执行ldconfig使配置生效。整个过程涵盖了从下载到环境配置的完整步骤,适用于Linux系统下的OpenCV安装。
2026-04-06 09:19:29
52
原创 Ubuntu 18.04下搭建FFmpeg开发环境
本文介绍了编译安装FFmpeg及相关组件的完整流程。首先安装yasm和nasm汇编器,然后配置编译x264和x265视频编码库(均设为静态库)。最后编译FFmpeg,启用x264支持并设置为共享库。整个过程包括下载源码包、解压、配置编译选项、执行make安装等标准步骤,并设置了相应的安装路径和PKG_CONFIG_PATH环境变量。该指南提供了从依赖安装到最终FFmpeg编译的完整解决方案。
2026-04-06 09:14:46
37
原创 Ubuntu 18.04下搭建HTTP服务器
本文介绍了Apache2服务器的安装与配置方法。首先通过apt命令安装Apache2,然后修改配置文件将默认端口改为8001,并设置访问目录为/var/www/html。接着说明了如何配置虚拟目录来隐藏真实路径,以及相关权限设置。最后测试了网页访问和文件下载功能,确认配置成功。主要涉及端口修改、目录设置、虚拟目录配置和权限管理等关键操作步骤。
2026-04-05 21:52:43
66
原创 Ubuntu 18.04下开发环境搭建
本文介绍了在Ubuntu系统中配置开发环境的详细步骤,主要包括: 设置root密码和更换清华源; 安装SSH服务并配置密钥登录; 搭建Samba文件共享服务; 安装编译工具链和依赖包; 配置VSFTP服务器; 搭建NFS网络文件系统。 重点内容包括:通过修改apt源配置文件提高软件下载速度,配置SSH实现远程安全登录,使用Samba实现文件共享,安装必要的开发工具链,以及设置FTP和NFS服务实现文件传输和共享。这些配置为嵌入式开发提供了完整的工具链和环境支持,特别适合需要交叉编译的开发场景。
2026-04-03 09:27:50
571
基于Qt实现的TCP聊天室
2023-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅