- 博客(6)
- 收藏
- 关注
原创 用epoll实现reactor模式
reactor是事件驱动的,其核心是不同的I/O事件对应不同的回调函数。不仅是 epoll,select 和poll,它们都是聚焦于I/O事件管理,实现对应的I/O操作。但是之前在了解 epoll 的时候,了解到 epoll 不也是事件驱动的吗?实际上还是有区别的:epoll 只是负责高效地监听 fd 上的事件,比如告诉应用程序哪些套接字有数据可读、哪些可以写入数据等。但是对于这些具体的事件要执行什么操作,epoll 并不关心。
2025-04-16 16:00:00
898
原创 select、poll、epoll解析
是最早被引入的 I/O 多路复用机制,select 的工作原理是将 fd 集合 fd_set 从用户空间复制到内核空间,由内核检查 fd 的状态,将有状态变化的 fd 集合返回给用户空间。nfds:它是需要监视的最大 fd 值加 1。为什么要加 1 呢?因为 fd 是从 0 开始编号的,例如最大 fd 是 5,那么实际需要检查的位是从第 0 位到第 5 位,总共 6 个位,所以 nfds 应该是 6(5 + 1)。这一参数用于指定 select 函数检查的 fd 范围。
2025-04-14 18:46:38
595
原创 socket网络编程常用API不完全指南
虽然 struct sockaddr 通用性强,但是它的成员变量在实际使用时不够方便,所以通常会使用特定协议族的地址结构,例如 struct sockaddr_in(用于 IPv4), struct sockaddr_in6(用于 IPv6)和 struct sockaddr_un(用于 Unix 域套接字)。UNIX\Linux中的一切都是文件。不同的计算机系统可能采用不同的字节序来存储多字节数据,常见的字节序有大端字节序(Big - Endian)和小端字节序(Little - Endian)。
2025-04-13 18:58:49
940
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人