Linux高性能服务器编程 epoll实现IO多路转接服务器
epoll实现IO多路转接服务器可通过以下视频学习 06-opell函数实现的多路IO转接_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 1.思路&功能**功能:**客户端输入小写字符串,服务器转成大写返回给客户端 思路: 核心思路 socket()、bind()、listen() epoll_create创建红黑树,它的返回值就是树的根节点 epoll_ctl将listenfd添加到树上 循环epoll_wait进行监听,它的返回值是满足监听的总个数,所以以它的返回值为遍历上限去判断事件 如果它返回的数组中data.fd等于lfd,那么就accept去连接客户端 并将新的cfd加入树中 如果不是lfd,就说明有读事件发生,就去判断读到的返回值,<0是出错 ==0是客户端关闭(这两个都要去将该cfd从树中移除...
Linux高性能服务器编程 poll实现IO多路转接服务器
poll实现IO多路转接服务器基于该视频完成 04-poll函数实现服务器_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 要求:能看懂看,看不懂也没啥大事,现在基本都用epoll代替了 大家看视频思路吧,代码就是从讲义里面copy了一份,因为不是很重要的东西 思路 代码实现warp.h12345678910111213141516171819202122232425262728293031323334353637383940414243#ifndef __WRAP_H_#define...
Linux高性能服务器编程 前台进程是什么
前台进程是什么 前台进程的定义 前台进程是指在操作系统中,与用户当前正在交互的进程。这些进程通常拥有最高的优先级,因为它们直接影响用户体验,是用户正在关注或者正在使用的应用程序对应的进程。 例如,当你在手机上打开一个游戏应用并正在进行游戏时,这个游戏应用对应的进程就是前台进程;在桌面系统中,你正在使用的文本编辑器,其进程也是前台进程。 前台进程的特点 资源分配优先级高: 操作系统会为前台进程分配更多的 CPU...
Linux高性能服务器编程 网络字节序本地字节序点分十进制转换函数总结 两种初始化socket并bind的步骤
网络字节序本地字节序点分十进制转换函数总结&&两种初始化socket并bind的步骤看完这些转换可以去看初始化socket的步骤,会印象更加深刻一些 ##1.网络字节序、本地字节序和点分十进制的数据长啥样 1.点分十进制常用来表示ip,就是192.168.120.139这样的字符串 2.本地字节序(主机字节序)和网络字节序字节存储顺序主要分为大端序(Big-endian)和小端序(Little-endian),区别如下 Big-endian:高位字节存入低地址,低位字节存入高地址 Little-endian:低位字节存入低地址,高位字节存入高地址 例如,将12345678h写入1000h开始的内存中,以大端序和小端序模式存放结果如下: 现代 PC...
Linux高性能服务器编程 5. Linux服务器程序规范
5. Linux服务器程序规范1.进程 PID进程的PID(Process ID)是操作系统中用于唯一标识一个进程的整数值。每个进程在创建时,操作系统都会分配一个唯一的PID,用来区分不同的进程。 PID的特点1.唯一性: 在操作系统运行的某一时刻,每个进程的PID都是唯一的。不同进程不会共享同一个PID。即使一个进程终止后,该PID可以被回收并分配给新创建的进程,但在同一时刻不会有两个进程拥有相同的PID。 2.进程生命周期: PID 的生命周期与进程的生命周期相对应。当一个进程被创建时,操作系统为它分配一个PID;当进程终止时,该PID被释放,并可能被分配给后续的新进程。 3.系统管理和调试: PID 在进程管理和调试中起着重要作用。系统管理员和开发者可以通过PID来监视、控制和调试进程。例如,使用 ps 命令可以查看系统中所有进程的PID,以及它们的状态、资源使用等信息。使用 kill 命令可以通过PID来终止指定的进程。 PID的分配PID 是由操作系统内核管理和分配的,通常是一个非负整数。PID...
Linux高性能服务器编程 4. 高级 I/O 函数
4. 高级 I/O 函数1.文件描述符文件描述符(File Descriptor, FD)是操作系统中用于访问文件的一个抽象概念。它是一个非负整数,通常由操作系统分配,用来标识被打开的文件或输入输出资源(如管道、网络连接等)。文件描述符在操作系统和应用程序之间充当桥梁,允许程序通过文件描述符来读取、写入文件或进行其他I/O操作。 1.文件描述符的类型文件描述符通常分为三类标准描述符: 标准输入(Standard Input,FD 0): 默认情况下与键盘关联,通常用于从用户那里接收输入数据。 标准输出(Standard Output,FD 1): 默认情况下与终端窗口关联,通常用于向用户显示输出数据。 标准错误(Standard Error,FD 2): 默认情况下也与终端窗口关联,但通常用于显示错误消息或诊断信息。 2.文件描述符的使用在UNIX和类UNIX操作系统中,文件描述符用于各种I/O操作,包括: 打开文件:open() 系统调用返回一个文件描述符,表示已打开的文件。 读取文件:read()...
Linux高性能服务器编程 6. 高性能服务器程序框架
6. 高性能服务器程序框架**《Linux 高性能服务器编程》**一书中,把这一章节作为全书的核心,同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后,正式进入了 Web 服务器项目的核心部分的学习 按照服务器程序的一般原理,服务器可以解构为三个主要模块: **I/O处理单元:**四种I/O模型,两种高效事件处理模式。 **逻辑单元:**两种高效并发模式;逻辑处理方式——有限状态机。 **存储单元:**服务器程序的可选模块,其内容与网络编程本身无关。 1.服务器模型C/S...
Linux高性能服务器编程 多进程并发服务器
多进程并发服务器基于该视频完成 11-多进程并发服务器思路分析_哔哩哔哩_bilibili 通过的是非阻塞忙轮询的方式实现的 和阻塞等待的区别就是,阻塞是真的阻塞了,而这个方式是一直在问有没有请求有没有请求 1.核心思路&功能实现一个服务器可以连接多个客户端,每当accept函数等待到客户端进行连接时 就创建一个子进程; 核心思路:让accept循环阻塞等待客户端,每当有客户端连接时就fork子进程,让子进程去和客户端进行通信,父进程用于监听并使用信号捕捉回收子进程;(子进程关闭用于监听的套接字lfd,父进程关闭用于通信的cfd) **功能:**客户端输入小写字符串,服务器转成大写返回给客户端 2.代码实现warp.h12345678910111213141516171819202122232425262728293031323334353637383940414243#ifndef __WRAP_H_#define...
Linux高性能服务器编程 多线程并发服务器
多线程并发服务器基于该视频完成 12-多线程并发服务器分析_哔哩哔哩_bilibili 通过的是非阻塞忙轮询的方式实现的 和阻塞等待的区别就是,阻塞是真的阻塞了,而这个方式是一直在问有没有请求有没有请求 linux | c | 多进程并发服务器实现-CSDN博客 可以先看看这篇博客,思路和功能都一样 1.核心思路&功能实现一个服务器可以连接多个客户端,每当accept函数等待到客户端进行连接时 就创建一个子进程; 核心思路:让accept循环阻塞等待客户端,每当有客户端连接时就fork子进程,让子进程去和客户端进行通信,父进程用于监听并使用信号捕捉回收子进程;(子进程关闭用于监听的套接字lfd,父进程关闭用于通信的cfd) **功能:**客户端输入小写字符串,服务器转成大写返回给客户端 2.代码实现warp.h12345678910111213141516171819202122232425262728293031323334353637383940414243#ifndef __WRAP_H_#define...
Linux高性能服务器编程 1.IP协议
1. IP协议TCP / IP 模型主要分为以下四层:应用层、传输层、网络层、网络接口层。 IP 协议 (IPv4)IPv4 的首部长度通常为 20B,除非含有可变长选项的部分。 IP 协议为上层协议提供无状态、无连接、不可靠的服务。 无状态(stateless)指 IP 通信双方不同步传输状态信息。这种服务的最大缺点是无法处理乱序和重复的 IP 数据报。优势是简单、高效。 无连接(connectionless)是指 IP 通信双方都不长久的维持对方的任何信息。上层协议每次发送数据的时候,都必须明确指定对方的 IP 地址。 不可靠是指 IP 协议不能保证 IP 数据报准确地到达接收端,只承诺尽最大努力交付,但会返回一个 ICMP 差错报文(超时、终点不可达、源点抑制、参数问题等等) 头部结构 主要字段 标识(identification)占 16 位,用来产生 IP 数据报的标识。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但这个 “标识”...