
C/C++网络编程专题
文章平均质量分 75
专攻Linux Windows系统下C、C++网络编程开发,精品核心知识点、彻底掌握网络编程!
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
程序员乐逍遥
15年C/C++跨平台开发资深程序员、VX找我ha666ck
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
log4cpp、log4cplus 与 log4cxx 三大 C++ 日志框架
受 Java 领域著名日志框架的启发,社区衍生出了多个 C++ 版本的日志库。其中,和是最广为人知的三大实现。原创 2025-08-10 16:43:29 · 36 阅读 · 0 评论 -
log4cplus 中的常用 Appender
Appender用途适用场景控制台输出调试、开发环境普通文件写入简单持久化按大小滚动防止日志过大按时间滚动按日期归档异步写入高性能、低延迟网络传输集中式日志管理。原创 2025-08-10 16:34:34 · 28 阅读 · 0 评论 -
C++ 日志 log4cplus 使用与配置指南
log4cplus多种日志级别(TRACE, DEBUG, INFO, WARN, ERROR, FATAL)多种输出方式(控制台、文件、滚动文件、远程 socket 等)自定义日志格式(通过 Layout)配置文件驱动(支持 properties 文件)线程安全(默认启用)// 添加自定义级别(需继承) // 一般不推荐,除非有特殊需求log4cplus是 C++ 项目中一个成熟、稳定、功能丰富的日志解决方案。它通过的设计模式,实现了高度的灵活性和可配置性。原创 2025-08-09 14:26:27 · 122 阅读 · 0 评论 -
C++ 双缓冲(Double Buffering)实现无锁读取与高效数据更新
在高并发、高性能的 C++ 应用程序中,如何安全、高效地处理“”场景是一个经典难题。频繁的锁竞争会导致读性能急剧下降。技术为此提供了一个优雅而高效的解决方案。原创 2025-07-30 16:57:51 · 57 阅读 · 0 评论 -
局域网 IP地址
局域网 IP 地址,也称为私有 IP 地址(Private IP Address),是用于在局域网内部标识设备的地址。这些地址不能直接在互联网上被访问,通常由路由器自动分配,用于设备之间的内部通信。原创 2025-07-25 21:42:44 · 295 阅读 · 0 评论 -
Boost.Asio 中的 acceptor
方法说明打开指定协议的 acceptor绑定到指定端口开始监听连接, backlog 最大未完成连接数同步接受连接异步接受连接设置 socket 选项(如 reuse_address)关闭 acceptor。原创 2025-07-22 10:13:28 · 55 阅读 · 0 评论 -
boost::asio 中 io_service与线程的关系
io_service模型描述优点缺点适用场景单线程io_service所有任务在一个线程中串行执行简单、安全无法利用多核调试、小型服务多线程io_service多个线程共享一个io_service并发处理能力强需要线程安全机制中小型并发服务多个io_service+ 多线程每个线程绑定一个io_service资源隔离、扩展性强管理复杂大型服务器、模块化设计。原创 2025-07-21 23:48:15 · 709 阅读 · 0 评论 -
Windows VS2019 编译 Apache Thrift 0.15.0
使用。原创 2025-07-21 15:10:00 · 324 阅读 · 0 评论 -
Windows 下 VS2019 编译 libevent-2.1.10 库
1. 你需要VS2019 编译好openssl-1.1.1 ,这个具体编译或者下载可以参考我的博客。接下来,打开CMake ,主要是下面的需要设置好。最后Config Generate即可;然后INSTALL右键生成。最后生成的库是这两个文件。全部成功生成 22个。原创 2025-07-18 17:45:42 · 54 阅读 · 0 评论 -
C++ Boost Aiso TCP 网络聊天(服务端客户端一体化)
【代码】C++ Boost Aiso TCP 网络聊天(服务端客户端一体化)原创 2025-07-15 23:58:27 · 82 阅读 · 0 评论 -
Boost.Asio 的C++ 简单网络聊天应用程序
【代码】 Boost.Asio 的C++ 简单网络聊天应用程序。原创 2025-07-15 23:47:54 · 278 阅读 · 0 评论 -
C++ 轻量级cpp-httplib库详解
单个头文件(httplib.h),易于集成到项目中支持 HTTP 服务端(Server)和客户端(Client)同步 API 设计,简单易用支持 HTTPS(通过 OpenSSL)支持上传文件、表单解析、JSON 请求/响应等零外部依赖(可选启用 SSL/TLS)是一个极简、强大且灵活的 C++ HTTP 库快速搭建 Web 服务原型构建小型 RESTful API实现嵌入式系统的 HTTP 接口开发桌面工具的本地 HTTP 控制面板。原创 2025-07-08 16:37:34 · 141 阅读 · 0 评论 -
C++ 开发利器 Poco 库详解
Poco 是一个用 C++ 编写的开源类库,目标是简化现代 C++ 应用程序的开发过程。其名字来源于英文“”,强调其良好的可移植性和模块化结构。模块功能Foundation核心库,提供基本类型、异常、智能指针、字符串、日期时间等Util配置读取、命令行参数解析、服务抽象Net网络通信模块,支持 TCP/UDP、HTTP 客户端/服务器、FTP、SMTP 等XMLXML 解析与生成JSONJSON 解析与序列化Data数据库访问(支持 MySQL、PostgreSQL、SQLite、ODBC 等)原创 2025-07-08 16:20:36 · 563 阅读 · 0 评论 -
深入了解WebSocket协议
WebSocket是一个独立于HTTP协议的通信协议,但它可以通过HTTP握手来初始化连接。一旦握手成功,就可以在这个已经建立的TCP连接上进行任意数量的数据交换,直到任一方关闭连接为止。这种机制使得WebSocket非常适合那些需要持续保持连接状态的应用场景。原创 2025-07-04 16:14:09 · 53 阅读 · 0 评论 -
HTTP协议利用TCP的特性来实现长连接
首先,我们需要明确什么是“长连接”。在网络通信中,“长连接”指的是客户端和服务端之间的连接在完成一次数据交换后不会立即关闭,而是保持打开状态以供后续请求和响应使用。这种方式减少了建立和断开连接所需的额外开销,提高了效率,尤其是在短时间内需要进行多次交互的情况下。原创 2025-07-04 15:51:30 · 82 阅读 · 0 评论 -
Windows 与 Linux 线程同步机制详解
同步机制Windows 特点Linux 特点共同点Mutex支持跨进程同步支持跨进程同步基础同步原语需要手动实现或第三方库内置支持优化读写并发API 更加面向对象API 更加传统 C 风格线程等待条件Semaphores提供了便捷的 API功能强大,支持跨进程同步控制访问数量提供了专门的事件对象可通过条件变量或信号量模拟线程间通知高效,仅限于单进程内的线程同步可通过实现,但不如临界区高效轻量级同步无论是 Windows 还是 Linux 平台, 可以对比起来记忆。原创 2025-06-23 13:34:49 · 152 阅读 · 0 评论 -
Linux 信号(Signal)与信号量(Semaphore)区别
【代码】Linux 信号(Signal)与信号量(Semaphore)区别。原创 2025-06-23 11:30:12 · 230 阅读 · 0 评论 -
Linux 多进程间通信(IPC)详解
通信方式是否持久化是否支持非亲缘进程是否支持双向通信同步机制说明Pipe(匿名管道)❌❌❌手动只能在具有亲缘关系的进程之间使用,如父子进程。半双工通信。FIFO(命名管道)✅✅❌手动支持无亲缘关系进程,通过文件系统路径访问,先进先出模式。Message Queue(消息队列)✅✅✅内建每个消息有类型,可选择性接收,适用于结构化数据传递。Signals(信号)❌(部分可发送)✅❌(单向通知)内建/手动异步事件通知机制,适合轻量级通知,不适合传输大量数据。原创 2025-06-23 11:28:01 · 83 阅读 · 0 评论 -
Windows IOCP(I/O Completion Port)模型详解
IOCP(Input/Output Completion Port,输入/输出完成端口)是 Windows 提供的一种高性能异步 I/O 模型,专为处理大量并发连接而设计。它结合了线程池管理和异步 I/O 的优势,是开发高性能服务器程序的核心技术之一。与传统的select等 I/O 模型相比,IOCP 更加高效且易于扩展,尤其适合用于高并发网络服务,如 Web 服务器、游戏服务器等。IOCP 是 Windows 上最强大的异步 I/O 模型之一,适用于构建高性能、高并发的服务器应用。原创 2025-06-21 22:43:17 · 94 阅读 · 0 评论 -
TCP 三次握手与四次挥手全流程详解
三次握手是为了防止已失效的连接请求突然传到服务器,造成资源浪费。客户端发送了一个连接请求SYN=x,但由于网络延迟未能及时到达。客户端超时重发SYN=x',成功建立并释放连接。前面那个失效的SYN=x此时才到达服务器。若采用两次握手,服务器会认为这是一个新连接,分配资源,但客户端并不响应,造成资源浪费。而使用三次握手,客户端不会对失效的SYN回复ACK,从而避免这个问题。状态描述LISTEN服务器等待客户端连接SYN_SENT客户端发起连接,发送 SYNSYN_RCVD。原创 2025-06-21 22:16:28 · 98 阅读 · 0 评论 -
常见应用层协议介绍
FTP(文件传输协议)是用于在网络上进行文件传输的标准协议。它允许用户连接到远程服务器并上传或下载文件,支持多种文件类型和操作权限。HTTP(超文本传输协议)是用于从 Web 服务器向浏览器传送网页内容的应用层协议。它是万维网(WWW)的基础协议。Telnet是一种用于远程终端访问的协议,允许用户通过网络连接到远程主机并在其上执行命令。它曾广泛用于早期的 UNIX/Linux 系统管理。协议功能端口是否加密主要用途FTP文件传输21(控制)、20(数据)否(可用FTPS/SFTP)原创 2025-06-21 22:12:36 · 97 阅读 · 0 评论 -
C++14 新特性详解与代码示例
C++14是 ISO C++ 标准的又一个重要更新版本,于2014 年正式发布。它是对C++11改进已有功能增强泛型编程能力提升 lambda 表达式的灵活性更加简洁的语法表达方式C++14 被广泛称为 “C++11 的小补丁(bug fix release)”,但它引入了许多开发者期待已久的新特性。类别内容效果语言改进泛型 Lambda、返回类型推导、初始化捕获更灵活的匿名函数数值支持二进制字面量、数字分隔符提高可读性和安全性模板增强变量模板、折叠表达式强化元编程能力。原创 2025-06-21 16:25:46 · 60 阅读 · 0 评论 -
Google TCMalloc 高性能内存分配器的设计与实现
是 Google 开发的一个高效的 C++ 内存分配库,全称是。它的设计理念——线程本地缓存 + 分级内存池,它被设计用于提升多线程环境下小对象的内存分配性能。TCMalloc 是gperftools工具集的一部分,广泛应用于高性能服务器程序中,如 MySQL、Redis、Google Chrome 等。// 简化 size class 表return p;原创 2025-06-21 16:17:59 · 72 阅读 · 0 评论 -
C++11 std::thread 多线程编程详解
线程是操作系统调度 CPU 时间的基本单位。一个进程中可以有多个线程,它们共享进程的资源(如内存、堆栈),但拥有各自独立的执行路径。虽然 C++ 标准库没有提供线程池,但我们可以通过队列和条件变量实现一个简单的线程池。private:});return;task();i < 8;++i) {});return 0;功能方法创建线程等待线程join()分离线程detach()互斥访问。原创 2025-06-21 15:18:24 · 136 阅读 · 0 评论 -
C++17 <filesystem>头文件 详解
头文件是一个命名空间下的一组类和函数,用于处理文件路径、文件状态以及目录操作。std::cout << "文件大小: " << size << " bytes" << std::endl;// 将 time_point 转换为时间字符串std::cout << "最后修改时间: " << std::asctime(std::localtime(&cftime));return 0;功能方法路径处理path类成员函数文件存在性检查文件类型判断目录操作removeremove_all。原创 2025-06-21 15:06:19 · 72 阅读 · 0 评论 -
C++ 函数参数传数组的技巧
方法是否需传递大小是否支持动态数组推荐程度模板 + 数组引用否否⭐⭐⭐⭐std::array否否⭐⭐⭐⭐否是⭐⭐⭐⭐⭐显式传大小是是⭐⭐⭐std::span(C++20+)否是⭐⭐⭐⭐⭐。原创 2025-06-21 13:34:58 · 43 阅读 · 0 评论 -
C++11 完美转发(Perfect Forwarding)
完美转发是指:在函数模板中,将一组参数以完全相同的方式(包括值类别、const 性质等)传递给另一个函数。如果传入的是左值,就转发为左值;如果传入的是右值,就转发为右值;如果传入的是 const 左值,就转发为 const 左值;……这使得我们可以在不写多个重载函数的情况下,支持任意类型的参数传递。标准库容器如的它会直接在容器末尾构造元素,避免不必要的拷贝或移动操作。// 构造一个 string,不调用拷贝或移动操作是否触发完美转发T&& param✅ 是T& param❌ 否。原创 2025-06-20 19:03:17 · 74 阅读 · 0 评论 -
C++11 右值引用(Rvalue Reference)
/ 合法:rref 是一个绑定到右值 5 的右值引用右值引用使用双引号&&表示,它可以绑定到临时对象(rvalues),而传统的左值引用(T&)只能绑定到具有名字的对象(lvalues)。操作是否触发移动是否调用拷贝是否掏空源对象T a;T b = a;❌ 否✅ 是❌ 否T a;✅ 是❌ 否✅ 是T a;✅ 是❌ 否✅ 是return a;(a 是局部变量)✅ 是(可能)❌ 否✅ 是(自动优化)右值引用是 C++11 中最重要的新特性之一,它不仅带来了移动语义。原创 2025-06-20 18:08:38 · 113 阅读 · 0 评论 -
C++ 11 智能指针 std::weak_ptr
类型是否拥有所有权是否增加引用计数是否可为空是否线程安全shared_ptr✅ 是✅ 是❌ 否✅ 是weak_ptr❌ 否❌ 否✅ 是✅ 是(调用 lock)是 C++ 智能指针体系中不可或缺的一部分。安全访问由shared_ptr管理的对象避免循环引用造成的内存泄漏实现高效的观察者模式、缓存系统等高级功能但同时也要注意它的使用限制和潜在陷阱,尤其是在多线程环境下的并发访问问题。原创 2025-06-20 14:38:12 · 71 阅读 · 0 评论 -
shared_ptr 类 之 std::shared_from_this 类的作用
定义了一个模板函数,_Ux是要管理的对象类型。这样允许该函数处理各种类型的指针(如int*MyClass*等)。表达式含义判断_Yty是否有_Esft_type类型(即是否继承了判断 A 是否可以从 B 公开、无歧义地继承最终结果:是否可以安全调用这个构造函数用于创建一个指向ptr的shared_ptr,但它并不增加原r的资源引用,而是共享其控制块。构造子对象的 shared_ptr在中绑定_Wptr在构造shared_ptr的过程中,自动检测并绑定继承了的对象的_Wptr。原创 2025-06-20 13:12:02 · 54 阅读 · 0 评论 -
C++11 std::shared_ptr 用法详解与常见陷阱
默认情况下,shared_ptr使用delete来释放资源。✅ 适用场景:文件句柄、socket、非堆内存等。是 C++ 中非常强大的资源管理工具,适用于多个指针共享同一资源的场景。然而,它也有一些潜在的陷阱,如循环引用、裸指针误用等。掌握以下几点,可以帮助你更好地使用shared_ptr使用替代裸指针构造避免循环引用,使用weak_ptr不要依赖做逻辑判断小心别名构造和自定义删除器的使用。原创 2025-06-20 11:41:54 · 51 阅读 · 0 评论 -
C++ 11 std::unique_ptr 自定义删除器
虽然unique_ptr默认使用delete清理内部资源(如B中的int* b使用非标准资源(如文件句柄、socket、线程等)改变释放方式(如调用fclose等)这时就需要为unique_ptr提供一个自定义删除器。删除器类型是否推荐说明函数指针✅简洁高效,适合固定行为Lambda 表达式✅✅可捕获上下文,适合一次性逻辑仿函数(Functor)✅✅✅可复用、可带状态,性能优秀✅更灵活,但有运行时开销struct B {删除器类型是否可带状态是否可复制性能。原创 2025-06-20 10:43:46 · 92 阅读 · 0 评论 -
C++ 11 类型推导 decltype 和 auto 的区别
场景推荐使用说明简化变量类型声明auto更适合日常开发中减少冗余代码获取表达式准确类型decltype更适合模板、泛型、元编程等高级用法保留完整类型信息结合两者优点,推荐在泛型中使用。原创 2025-06-20 10:37:33 · 68 阅读 · 0 评论 -
C++ 中的类型转换: static_cast dynamic_cast const_cast reinterpret_cast
C++ 提供了四种主要的类型转换操作符:、、 和 。 是最常用的类型转换操作符,用于编译时已知类型的转换。 无法移除const 修饰的类型。2. 用法: 主要用于多态类型之间的向下转型(downcasting),并且会在运行时进行类型检查。如果转换失败,返回空指针(对于指针)或抛出异常(对于引用)。3. 用法: 用于添加或移除变量的 或 属性。它是唯一可以修改常量性的转换操作符。4. 用法: 是最危险的一种类型转换,它重新解释底层位模式,不做任何类型检查。适用于低级操作,如直原创 2025-06-19 20:47:00 · 78 阅读 · 0 评论 -
为什么 C++ 11 引入了 `nullptr`
nullptr的引入是为了弥补 C++ 中空指针表示上的不足,提升语言的类型安全性和代码可读性。它是 C++11 中一个非常实用的小特性,建议所有现代 C++ 项目都使用nullptr替代传统的NULL或0。原创 2025-06-19 17:20:59 · 131 阅读 · 0 评论 -
Linux C语言创建多进程
每次fork()后,子进程应尽快调用exit()或exec()。父进程应及时回收子进程资源,避免僵尸进程。对于长期运行的程序,考虑使用守护进程模式。多进程之间需要通信时,可使用管道、共享内存、消息队列等 IPC 技术。原创 2025-06-19 16:29:51 · 81 阅读 · 0 评论 -
Linux 下 6 种常见进程通信IPC方式 Pipe FIFO
原创 2025-06-19 14:37:43 · 45 阅读 · 0 评论 -
Linux 下 多路复用 网络模型 select poll epoll
机制核心结构体初始化/创建注册/更新事件等待事件selectfd_set使用FD_ZEROFD_SET构建集合不需要单独注册,每次调用传入集合select()poll准备数组每次调用传入数组poll()epoll创建实例添加/修改/删除特性selectpollepoll文件描述符上限有(如 1024)无无每次调用是否遍历所有 fd是是否(只返回就绪的)是否支持边缘触发否否是性能(大量连接)差一般好推荐用于小型项目中小型项目高性能服务器。原创 2025-06-19 11:53:25 · 44 阅读 · 0 评论 -
Linux 下系统原生的 C++ 线程同步与异步编程详解(含示例代码)
方法所属是否推荐应用场景POSIX API✅ 推荐共享资源保护POSIX API✅ 推荐线程间通信POSIX API✅ 推荐读多写少场景POSIX API❗慎用短时间等待POSIX API✅ 推荐后台任务aio_readaio_writePOSIX AIO✅ 推荐高性能异步 I/OLinux 下使用原生的pthread接口可以实现高效的线程同步与异步操作,尤其适合对性能、资源控制有较高要求的系统级编程项目。原创 2025-06-19 10:53:03 · 34 阅读 · 0 评论 -
C++ 多线程同步std::condition_variable
特性说明所属头文件是否跨平台✅ 是是否线程安全✅ 是是否支持超时✅ 是推荐搭配、lambda 表达式是 C++ 中实现多线程通信和同步的强大工具。它可以让你的线程在特定条件下“休眠”或“唤醒”,从而避免轮询带来的资源浪费,并提升程序的效率和可读性。原创 2025-06-19 10:49:01 · 45 阅读 · 0 评论