- 博客(10)
- 收藏
- 关注
原创 从零实现一个基于 epoll ET 模式的高性能聊天服务器(附完整源码)
本文介绍了一个基于epoll ET模式的高性能聊天服务器实现。该项目采用单线程设计,通过epoll边缘触发模式实现高并发处理,无需第三方依赖。核心功能包括:ET模式事件通知、长度前缀协议解决TCP粘包问题、消息广播机制、30秒心跳超时检测以及优雅退出处理。文章详细解析了协议设计、ET模式循环读取、超时检查等关键代码实现,并提供了项目运行和测试方法。该项目完整开源,代码清晰简洁,适合学习Linux网络编程核心机制,尤其适合理解工业级服务器(如Nginx、Redis)所采用的epoll+ET模式实现原理。
2025-11-30 18:52:58
192
1
原创 [ C/C++网络编程 ] 使用长度前缀解决TCP粘包 + 拆包问题
本文介绍了使用长度前缀方法解决TCP粘包和拆包问题的服务器和客户端实现。服务器通过select模型处理多客户端连接,在消息前添加4字节网络字节序的长度前缀。客户端采用类似机制,处理消息时先读取长度头再解析完整消息。文章还解释了网络字节序(大端)和主机字节序(小端)的转换必要性,指出只有多字节整数需要转换,单字节字符无需处理。通过htonl/ntohl函数实现字节序转换,确保跨平台数据正确传输。
2025-11-14 16:47:05
244
2
原创 《伺候好多进程的“祖宗”:信号(Signal)和Sigaction的使用指南》
本文介绍了C/C++多进程网络服务器的实现方法。首先通过fork()创建子进程处理客户端请求,主进程使用非阻塞waitpid()轮询回收子进程。随后引入更高效的信号处理机制,使用sigaction()注册SIGCHLD信号处理函数,通过SA_RESTART标志确保accept()调用不被中断。文章重点阐述了父子进程间文件描述符的管理:子进程需关闭监听socket,父进程需关闭连接socket,以避免资源泄漏和惊群效应。最后给出了完整的多进程服务器代码示例,展示了如何处理客户端连接、收发数据及进程回收。
2025-10-10 20:23:32
552
原创 【C/C++ 网络编程(socket)】封装client和server实现简易通信
本文介绍了C/C++网络编程中服务器(server)的封装实现方法。文章首先回顾了服务器通信的基本流程(socket->bind->listen->accept->recv->send),然后详细讲解了如何通过类封装将这些功能模块化。作者提供了完整的TCPserver类实现代码,包含set_server_base()、listen_server()、accept_server()等核心方法。
2025-09-30 15:58:30
1004
原创 Client客户端class封装思路,C/C++
本文介绍了网络编程中客户端与服务器的实现差异。服务器连接流程为socket->bind->listen->accept->recv/send,而客户端则是socket->connect->send/recv。重点讲解了客户端的实现过程:通过socket创建套接字,使用inet_pton转换IP地址,connect建立连接后即可进行通信(需注意字符串转换和缓冲区处理)。最后强调套接字关闭的重要性,并指出网络编程作为基础技能需要持续学习。文章以通俗比喻解释了客户/服务器关系,适合初学者理解基本概念。
2025-09-27 17:42:23
957
原创 TCP_Client_and_Server,C/C++基础实现
本文介绍了一个基于C++的TCP服务器实现代码,详细解析了网络编程中的关键概念和函数。代码展示了一个完整的服务器创建流程,包括socket创建、绑定(bind)、监听(listen)和接受连接(accept)。服务器能够处理客户端请求并返回相应信息,支持"hello"、"time"、"bye"等命令交互。文章特别解释了网络编程中容易困惑的概念,如文件描述符、sockaddr_in结构体、字节序转换等,并提供了类似"网吧"的通俗比
2025-09-23 07:59:22
761
原创 细说算法题不同解法的特性
本文探讨了LeetCode算法题目的多种解法及其面试应用价值。以75.颜色分类和33.搜索旋转排序数组为例,分析了不同解法的优劣:暴力解法虽能通过但效率低下,而三指针法和标准二分查找则更高效专业。作者强调面试中应掌握普遍解法而非投机取巧,指出算法能力对技术面试的重要性,建议通过高效解法展示编程实力,避免使用简单但不符合题目要求的代码。文章提醒读者刷题要注重质量而非速度,掌握标准解法才能给面试官留下良好印象。
2025-09-03 16:44:16
1155
原创 unordered_map简易底层代码,基础功能实现
本文实现了一个简化版的哈希表unordered_mapfake,采用链地址法处理哈希冲突。核心结构包括:结点node存储键值对,桶数组buckets存储链表头指针,capacity表示桶数量,size记录元素数。主要功能包括:插入时自动扩容(负载因子>0.75时容量翻倍)、通过哈希值定位桶处理冲突、查找和删除操作。特别说明哈希冲突仅与key相关,不同key可能哈希到同一桶形成链表,相同key则覆盖值。删除需区分头结点和中间结点。该实现展示了哈希表的基本原理,包括哈希函数、冲突处理、动态扩容等核心机制。
2025-09-01 18:34:25
560
原创 c++工厂函数和完美转发(参考unique_ptr)
C++模板函数make_unique的实现细节。该函数通过模板参数T和可变参数包Args创建智能指针,其中Args&&...使用万能引用和完美转发保持参数的值类别。模式展开确保类型与值正确匹配,比简单展开更安全可靠。完美转发能区分左右值,示例代码演示了其在包装函数中的应用价值。该实现方式特别适合需要精确控制参数传递的场景,如结构体初始化。
2025-08-28 17:08:40
698
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅