
网络编程
文章平均质量分 85
网络编程
lucas1018
路漫漫其修远兮,吾将上下而求索
展开
-
muduo网络库之Reactor模式
muduo网络库中的Reactor模式原创 2023-02-07 23:32:08 · 368 阅读 · 0 评论 -
I/O多路复用之select、poll和epoll
I/O多路复用是这样一种机制:通过一个进程去监视多个文件描述符,一旦其中某个描述符就绪(通常是读就绪或者写就绪),就去通知程序进行相应的读或写操作,如果始终没有描述符就绪,则一直阻塞直到超时。 目前支持I/O多路复用的常见系统调用有select、poll和epoll。注意,这三者本质上还是属于同步I/O。 一、select select函数监视...原创 2020-02-20 19:32:41 · 444 阅读 · 0 评论 -
nginx之server从配置到监听
一般的nginx某个虚拟主机配置文件可能如下: http { include mime.types; access_log logs/access.log; gzip on; server { listen 80; server_name www.test.com; location / { proxy_pass http://127.0.0.1:900...原创 2020-11-03 20:32:40 · 1290 阅读 · 0 评论 -
redis之事件驱动
redis服务器是一个事件驱动程序,服务器主要处理以下两类事件: 文件事件:redis服务器通过套接字与客户端进行连接,通信时会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。简言之文件事件就是服务器对套接字操作的抽象; 时间事件:redis服务器中的一些操作需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。 本文只借文件事件来研究redis中事件,时间事件以后再介绍。这里还是从initServer()方法中的部分代码看起: ...原创 2020-07-05 00:22:17 · 567 阅读 · 0 评论 -
redis之启动服务监听
redis是用c语言实现的一个内存数据库,先从server.c文件中的main()方法看起: int main(int argc, char **argv) { ... initServerConfig(); ... initServer(); ... } main()方法干的事很多,这里只研究启动服务以及监听这块,主要就是上面两个方法。initServerConfig()方法主要就是给server结构体赋初始值,部分代码如下: ...原创 2020-06-28 23:49:59 · 2228 阅读 · 0 评论 -
套接字api之listen函数
listen函数仅由服务器端调用,主要干了两个事情: 将套接字从closed转态转为listen状态; 函数的第二个参数backlog指定了内核为相应套接字排队的最大连接个数。 #include <sys/socket.h> int listen(int sockfd, int backlog); 对于每个给定的监听套接字,内核都会维护两个队列:未完成连接队列(incomplete connection queue)和已完成连接队列(completed connectio...原创 2020-05-24 17:35:21 · 811 阅读 · 1 评论