自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 网络编程(七):C++实现基于reactor的http&websocket服务器

本文根据本系列上一篇文章《网络编程(六)》的代码改进而来,为了便于理解,可以先移步上一篇文章。一、http服务器是什么?HTTP 服务器是一种用于处理和响应 HTTP 请求的服务器,它是基于HTTP 协议(超文本传输协议)工作的。HTTP 服务器接受客户端(通常是浏览器或其他客户端应用程序)发起的请求,并返回所请求的资源或信息。HTTP 服务器的基本功能:接收请求:HTTP 服务器监听来自客户端的 HTTP 请求。

2025-02-13 20:34:37 943

原创 网络编程(六):C++实现基于reactor的百万级并发服务器

这篇文章的代码基于本系列上一篇《网络编程(五)》的reactor设计模式,做了一些改进而成。:用于存储读取和写入数据的缓冲区大小。:最大连接数。MAX_PORTS:最大监听的端口数。宏用于计算两个类型的时间差(单位为毫秒)。RCALLBACK定义了一个函数指针类型,表示回调函数。int fd;conn结构体用于管理每个连接的状态。它包含了与连接相关的各种信息,比如读取缓冲区、写入缓冲区、读取和写入的数据长度、回调函数等。

2025-02-10 16:59:50 2712 3

原创 网络编程(五):事件驱动reactor的原理与实现

一、reactor是什么?事件驱动Reactor是一种设计模式,广泛应用于异步输入输出(I/O)模型中,尤其是在需要处理大量并发连接的网络应用中。Reactor模式的主要目标是通过事件驱动机制处理事件(如客户端请求),并在事件发生时调用相应的处理程序。事件多路复用器(Event Demultiplexer):负责监听多个I/O通道(例如网络套接字)的事件。常见的事件多路复用机制有selectpoll和epoll等。Reactor:负责将事件从事件多路复用器获取后,分发给相应的事件处理器。

2025-02-10 16:59:39 1794

原创 网络编程(四):网络io多路复用select/poll/epoll:epoll

IO多路转接(复用)之epoll | 爱编程的大丙单线程异步模型通过 epoll 实现单线程处理多个连接,避免为每个连接创建线程/进程的开销。回显服务逻辑读取客户端数据后立即原样回传(recv→send),实现简单的 Echo 功能。水平触发特性若客户端发送的数据超过buffer大小(1024 字节),剩余数据会在下次epoll_wait中继续触发EPOLLIN事件。隐式资源回收当客户端主动关闭连接时,通过recv返回0检测到断开,触发 fd 的清理操作。补充1:为什么是水平触发?

2025-02-10 16:59:28 869

原创 网络编程(三):网络io多路复用select/poll/epoll:select&poll

I/O 多路复用是一种高效的 I/O 模型,用于同时处理多个文件描述符(如套接字、管道、文件等)的 I/O 事件。它通过监视这些文件描述符,确定哪些文件描述符已经准备好进行 I/O 操作(如读取或写入),从而避免阻塞在单个文件描述符的 I/O 操作上。I/O 多路复用在网络编程中非常重要,尤其是在高并发服务器中,因为它允许单个线程或进程高效地处理多个客户端连接,而无需为每个连接都创建一个线程或进程。fd_set。

2025-02-10 16:59:16 621

原创 网络编程(二):一请求一线程&多线程网络io

推荐一本讲网络编程的书:《TCP/IP网络编程》(尹圣雨)1. 什么是 socket_操作系统中的socket库-优快云博客2. socket 的具体实现_socket内核实现-优快云博客这段代码实现了一个多线程TCP回显服务器监听端口:在 2000 端口接受客户端连接。多线程处理:每个客户端连接由一个独立线程处理。回显数据:将客户端发送的数据原样返回(如客户端发送 "Hello",服务器返回 "Hello")。这篇文章先讲解了网络编程中最核心的socket。

2025-02-10 16:58:59 49

原创 网络编程(一):网络编程和网络io的基本概念

网络I/O(Input/Output)是指在计算机系统中,程序通过网络接口与其他计算机或设备进行数据交换的过程。它是计算机系统中输入和输出操作的一部分,特别是在涉及网络通信的场景下,数据的发送和接收都属于网络I/O操作。输入(Input):程序从网络接收数据的过程。例如,客户端从服务器接收请求响应,或者从远程数据库中查询数据。输出(Output):程序通过网络发送数据的过程。例如,客户端向服务器发送请求,或者应用程序向其他设备发送数据。

2025-02-10 16:58:41 784

原创 通过Samba配置将虚拟机内存映射到主机盘符

为了方便对虚拟机进行文件管理,程序员通常会通过Samba配置将虚拟机内存映射到主机盘符这篇文章给出了完整的操作步骤,快去尝试吧!

2025-02-10 16:57:57 543

原创 Linux C编程:统计文件单词数量&统计每个单词出现的次数

这是零声学院Linux入门环境编程的第二个项目,原本是统计文件单词数量作为例题,统计每个单词出现的次数作为课后作业。其中统计文件单词数量是用有限状态机来实现的,原理比较简单,且我认为源码存在一定缺陷,因此不介绍状态机的方法。下面我直接推倒重来,将两个问题合并起来解决。int count;MAX_WORDS:定义了最多可以处理 1000 个不同的单词。:单词的最大长度为 100 个字符。WordCount结构体用来保存每个单词及其出现的次数。

2024-10-22 22:58:58 924

原创 shell脚本检测ip地址,获取本机ip地址

这是零声学院Linux入门环境编程的第一个项目的总结。主要的内容是用shell脚本编程来实现检测和获取ip地址的功能,这篇文章将会展示我如何0基础学习shell脚本,如何解决学习中遇到的问题,最后实现了怎样的结果。提示:以下是本篇文章正文内容,下面案例可供参考正文内容介绍了两个Shell脚本编程的简单案例。其实完整的知识点还应该包括Linux的安装,环境的配置,不过这个过程太琐碎,又缺少参考价值,而且写起来很麻烦,就没有写。

2024-10-21 19:18:34 1416

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除