
WebServer
文章平均质量分 93
本专栏系列文章主要为牛客网系列教程《C++高并发服务器WebServer》学习笔记,笔记融入了个人观点、见解和学习过程中遇到的问题Bug及解决方案与思路。
Golinie
日拱一卒 功不唐捐
展开
-
【C++高并发服务器WebServer】-18:事件处理模式与线程池
对Reactor、Proactor、同步IO模拟Proactor模式进行了概述介绍。原创 2025-02-10 13:11:06 · 4291 阅读 · 0 评论 -
【C++高并发服务器WebServer】-17:阻塞/非阻塞和同步/异步、五种IO模型、Web服务器
陈硕大神说过一句话:处理IO的时候,阻塞和非阻塞都是同步IO(都需要我们用户自己去操作数据),只有使用了特殊的API才是异步IO原创 2025-02-09 22:48:11 · 11705 阅读 · 0 评论 -
【C++高并发服务器WebServer】-16:UDP简单实现
指向sockaddr结构的指针,该结构包含了目的地址信息。:指向变量的指针,该变量在调用前应初始化为 src_addr 结构的长度。调用成功后,该变量将被更新为实际接收到的地址的长度。:指向 sockaddr 结构的指针,该结构用于存储发送方的地址信息。也可以设置特定的标志来改变发送的行为,如MSG_DONTROUTE(绕过路由器)。也可以设置特定的标志来改变接收的行为,如 MSG_DONTWAIT(非阻塞接收)。这个长度应该与dest_addr指向的结构的大小相匹配。:要发送的数据的长度(字节数)。原创 2025-02-09 21:19:20 · 6840 阅读 · 0 评论 -
【C++高并发服务器WebServer】-15:poll、epoll详解及实现
本文主要介绍了poll和epoll的实现,其中重点分析了epoll的函数、工作模式等。原创 2025-02-09 20:58:30 · 5171 阅读 · 0 评论 -
【C++高并发服务器WebServer】-14:Select详解及实现
本文主要内容是Select的函数详解及服务端与客户端的demo实现。原创 2025-02-09 18:41:47 · 11349 阅读 · 0 评论 -
【C++高并发服务器WebServer】-13:多线程服务器开发
探讨多线程服务器开发的关键技术,并详细分析了 TCP 状态转换过程。同时,文章重点讨论了端口复用技术,通过 SO_REUSEADDR 和 SO_REUSEPORT 选项的设置,解决了服务器快速重启和端口冲突的问题。原创 2025-02-08 23:29:52 · 11637 阅读 · 0 评论 -
【C++高并发服务器WebServer】-12:TCP详解及实现
欢迎来到Golinie的频道,这里是C++并发服务器专题。本篇文章主要围绕TCP通信展开,详细介绍了TCP通信流程以及关键的套接字函数,包括socket()、bind()、listen()、accept()和connect()。同时,通过server端和client端的代码示例,展示了并发服务器的实现过程。此外,还深入探讨了TCP三次握手、滑动窗口机制以及四次挥手过程,最后介绍了多进程并发服务器的设计思路。原创 2025-02-08 21:18:35 · 11694 阅读 · 0 评论 -
【C++高并发服务器WebServer】-11:Socket与IP地址转换
很多网络编程函数诞生早于 IPv4 协议,那时候都使用的是 struct sockaddr 结构体,为了向前兼容,现在sockaddr 退化成了(void *)的作用,传递一个地址给函数,至于这个函数是 sockaddr_in 还是sockaddr_in6,由地址族确定,然后函数内部再强制类型转化为所需的地址类型。因此,Linux 定义了下面这个新的通用的 socket 地址结构体,这个结构体不仅提供了足够大的空间用于存放地址值,而且是内存对齐的。通过下面的代码,我们可以确认完整的网络字节序是什么样子的。原创 2025-01-27 22:32:34 · 6115 阅读 · 0 评论 -
【C++高并发服务器WebServer】-10:网络编程基础概述
第一步,从IP 中找到所属的网络,好比是去找这个人是哪个小区的:第二步,再从 IP 中找到主机在这个网络中的位置,好比是在小区里面找到这个人。MAC地址的长度为 48 位(6个字节),通常表示为 12 个 16 进制数,如:00-16-EA-AE-3C-40 就是一个MAC 地址,其中前3个字节,16 进制数 00-16-EA 代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数 AE-3C-40 代表该制造商所制造的某个网络产品(如网卡)的系列号。原创 2025-01-27 20:28:33 · 1630 阅读 · 0 评论 -
【C++高并发服务器WebServer】-9:多线程开发
本文涵盖了线程的基础知识、操作方法、同步机制、死锁问题、读写锁以及生产者-消费者模型等内容,旨在介绍线程编程的关键知识点和实战demo。原创 2025-01-26 17:45:03 · 8943 阅读 · 0 评论 -
【C++高并发服务器WebServer】-8:终端、进程组、会话、守护进程
在 UNIX 系统中,用户通过终端登录系统后得到一个shell 进程,这个终端成为 shell 进程的控制终端(Controlling Terminal),进程中,控制终端是保存在 PCB 中的信息,而 fork()会复制 PCB 中的信息,因此由 shell 进程启动的其它进程的控制终端也是这个终端。一个进程可能会因为终止而退出进程组,也可能会因为加入了另外一个进程组而退出进程组。一个进程组拥有一个进程组首进程,该进程是创建该组的进程,其进程ID为该进程组的ID,新进程会继承其父进程所属的进程组 ID。原创 2025-01-26 11:12:22 · 8762 阅读 · 0 评论 -
【C++高并发服务器WebServer】-7:共享内存
探讨了共享内存的实现与应用,涵盖从基础函数到实际案例的多个方面。首先,详细介绍了shmget函数用于创建或获取共享内存段,以及shmat和shmdt函数分别用于将共享内存段附加到进程地址空间和分离。shmctl函数的使用展示了如何控制共享内存段的属性,包括删除操作。ftok函数的讲解则帮助读者理解如何生成用于标识共享内存段的键值。此外,对比了共享内存与内存映射的异同,并通过一个小demo展示了共享内存的实际应用原创 2025-01-25 21:46:59 · 3995 阅读 · 0 评论 -
【C++高并发服务器WebServer】-6:信号
介绍了信号的基本概念及其在Linux系统中的应用。首先,文章阐述了信号的核心概念,包括信号的定义、用途以及如何通过core文件捕获程序崩溃时的状态信息。接着,文章详细介绍了如何使用kill命令发送信号,以及如何通过alarm函数和setitimer调用实现定时信号的生成。文章还深入探讨了信号捕捉机制,包括signal和sigaction函数的使用,以及信号集的管理。此外,文章分析了内核实现信号捕捉的过程,并特别讨论了SIGCHLD信号在处理僵尸进程中的重要作用。原创 2025-01-25 20:14:50 · 8786 阅读 · 0 评论 -
【C++高并发服务器WebServer】-5:内存映射与进程通信
【C++高并发服务器WebServer】-5:内存映射与进程通信原创 2025-01-25 14:54:56 · 8814 阅读 · 0 评论 -
【C++高并发服务器WebServer】-4:进程间通信(管道)
【C++高并发服务器WebServer】-4:进程间通信(管道)原创 2025-01-24 21:47:36 · 8103 阅读 · 0 评论 -
【C++高并发服务器WebServer】-3:进程控制(退出进程、孤儿进程、僵尸进程、进程回收)
【C++高并发服务器WebServer】-3:进程控制(退出进程、孤儿进程、僵尸进程、进程回收)原创 2025-01-24 13:54:01 · 8318 阅读 · 0 评论 -
【C++高并发服务器WebServer】-2:exec函数簇、进程控制
【C++高并发服务器WebServer】-2:exec函数簇、进程控制原创 2025-01-23 23:50:56 · 8100 阅读 · 0 评论 -
【C++高并发服务器WebServer】-1:Linux中父子进程fork创建及关系、GDB多进程调试
【C++高并发服务器WebServer】-1:Linux中父子进程fork创建及关系、GDB多进程调试原创 2025-01-23 17:01:32 · 8558 阅读 · 0 评论