1.FREE SOLO - 自己动手实现Raft - 11 - libuv源码分析与调试-2
FREE SOLO - 自己动手实现Raft - 11 - libuv源码分析与调试-2
本次内容将深入剖析libuv如何处理网络事件,证书具体流程如下:
首先,源码EventLoop通过创建epoll fd,证书在Linux系统中提前准备。源码
然后,证书超级埋伏源码利用uv_run函数启动EventLoop,源码汽车html源码调用epoll_wait处理网络事件。证书
服务端socket创建流程:通过uv_tcp_bind、源码uv__tcp_bind、证书maybe_new_socket和new_socket进入new_socket函数。源码在new_socket中,证书先创建socket fd,源码再利用uv__stream_open将fd赋值给uv_stream_t,证书色修源码代表TcpServer。源码listen fd设置为。证书
紧接着,调用系统bind函数。咸鱼源码演示
紧接着,使用uv_tcp_listen执行listen操作。
通过io_watcher建立listen fd与回调函数uv__server_io之间的联系,将此io_watcher加入到loop的trino源码剖析watcher_queue中。
当有连接请求时,io_watcher回调uv__server_io,执行accpt4系统调用,创建socket。接受fd设置为。
在uv__server_io中创建好socket fd后,通过stream->connection_cb调用用户提供的回调函数on_new_connection。
用户在on_new_connection中调用uv_accept,创建uv_tcp_t结构,表示TcpClient。
接着,通过uv_read_start和uv__io_start函数,将socket fd注册到loop的监听队列中,回调函数为uv__stream_io。
后续流程涉及客户端主动连接及数据读写。
总结本次内容,深入理解libuv在处理网络事件时的机制与流程,掌握其关键步骤。