- 博客(9)
- 收藏
- 关注
原创 网络编程之TCP编程
本文介绍了TCP编程的基础知识,包括套接字(socket)的概念、发展历程和类型(流式、数据报、原始套接字),端口号的作用及分类,以及字节序的转换方法。重点讲解了TCP编程流程:服务器端需要创建套接字、绑定、监听、接受连接和通信;客户端则需创建套接字、连接服务器和通信。文章还探讨了TCP粘包问题及其解决方案,网络协议的数据封装过程,并使用Wireshark进行抓包分析。最后介绍了TCP的三次握手建立连接和四次挥手断开连接的机制,以及循环服务器、多线程/多进程并发服务器和IO多路复用等服务器模型,并提供了相应
2025-06-05 20:20:44
1191
原创 认识IP和网络模型
在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。某公司有四个部门:部门A、部门B、部门C、部门D,每个部门各50台计算机接入公司局域网,如果要在192.168.20.0网段为每个部门划分子网,子网掩码应该怎么设置,每个子网的地址范围分别是什么?该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。
2025-06-03 19:28:57
1359
原创 Linux IO 模型
本文介绍了四种I/O模型及其特点:1. 阻塞式I/O:最常见但效率低,读写操作会阻塞进程,直到数据就绪;2. 非阻塞式I/O:通过轮询检查数据就绪状态,耗费CPU但可处理多路I/O,可通过fcntl设置;3. 信号驱动I/O:异步通知机制,内核通过信号SIGIO通知数据就绪,需配合信号处理函数;4. I/O多路复用:包括select、poll和epoll三种实现,能同时监控多个文件描述符。其中select有1024个描述符限制且效率低,poll优化了描述符限制但仍需轮询,epoll采用异步回调机制效率最高。
2025-05-29 19:06:42
1043
原创 进程间通信-IPC
1.进程间通信的方式IPC1.早期的进程间通信:无名管道(pipe)、有名管道(fifo)、共享内存(share memory)消息队列(message queue)、信号等集(semaphore set)2.无名管道2.1 原理一个进程的输出可以当做另一个进程的输入2.2 特点只能用于具有亲缘关系的进程之间的通信半双工的通信模式,具有固定的读端fd[0]和写端fd[1]。管道可以看成是一种特殊的文件,对于它的读写可以使用文件IO如read、write函数。
2025-05-28 20:51:54
991
原创 线程-Thread
本文介绍了线程的基本概念及其相关操作。线程是轻量级进程,与进程共享资源但拥有独立运行状态,相比进程更易通信但安全性较低。重点讲解了线程的创建(pthread_create)、退出(pthread_exit)、资源回收(pthread_join/detach)等核心函数接口,以及同步机制的实现方法。通过信号量(sem_init/wait/post)实现线程间同步,并附有主线程与子线程通过信号量通信的代码示例。文章系统性地涵盖了线程管理的各个方面,为理解多线程编程提供了基础指导。
2025-05-28 19:27:17
878
原创 进程-Process
进程是程序的动态执行实例,包含程序代码、数据和系统资源分配。Linux进程分为用户空间和内核空间,具有独立的0-4G虚拟地址空间。进程状态包括运行态、睡眠态、僵尸态等,通过fork()创建子进程,父子进程共享代码但拥有独立地址空间。进程通信通过CPU时间片轮转实现多任务,需注意避免僵尸进程(使用wait/waitpid回收资源)。进程控制涉及优先级调度(抢占式/非抢占式)、进程号获取(getpid/getppid)及终止(exit/_exit)。关键区别:程序是静态文件,进程是动态执行实体。
2025-05-28 09:33:53
1044
原创 Linux中库的区别与使用
本文介绍了C语言中头文件和库文件的使用方法。头文件分为系统路径查找(使用<>)和当前路径查找(使用""),包含函数声明、宏定义等内容。库文件分为静态库(.a)和动态库(.so),静态库编译时被复制到程序中,体积大但运行快;动态库运行时加载,体积小但需额外配置。文章详细说明了两种库的制作步骤:静态库使用ar命令打包,动态库需要-fPIC编译选项。最后对比了两者的优缺点:静态库移植性好但升级麻烦,动态库升级简单但依赖运行环境。还提供了解决动态库加载问题的三种方法,并指出默认优先使用动态库。
2025-05-26 21:01:44
935
原创 IO进程中的文件IO
文件IO是操作系统提供的系统调用接口,用于对文件进行输入输出操作。它基于文件描述符(非负整数)实现,默认打开0(标准输入)、1(标准输出)、2(标准错误)三个描述符。主要操作包括:open()打开文件(支持多种模式如O_RDONLY、O_CREAT等),close()关闭文件,read()/write()读写数据,以及lseek()定位文件位置。与标准IO相比,文件IO无缓冲机制,每次操作都直接引发系统调用,可操作除目录外的多种文件类型。权限设置时需注意umask的影响,最终权限为mode & ~umask
2025-05-26 19:54:48
398
原创 IO进程中的标准IO
本文介绍了C语言标准IO的基本概念与操作。标准IO是C库中提供的一组高效输入输出函数接口,通过缓冲机制减少系统调用,采用流(FILE*)操作方式。系统默认打开三个流:stdin、stdout、stderr。文章详细讲解了三种缓冲区类型(全缓存、行缓存、无缓存)及其刷新机制,重点分析了文件操作函数:fopen(多种打开模式)、fclose、fgets/fputs(字符串读写)、fread/fwrite(二进制读写),以及文件定位函数rewind、fseek和ftell的使用方法。标准IO能有效处理大量数据读写
2025-05-26 19:39:02
494
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人