libevent库:
开源、跨平台源代码精简、功能完整。
tar -zxvf ...
libevent库使用的一般方法:
1.struct event_base *base;
2.base = event_base_new();
3.向base上安插事件 listen signal
4.event_base_dispatch(base);
5.event_base_free(base);
libevent反应堆----libevent库设计的核心思想
普通epoll:epoll_create创建一颗监听红黑树。socket、bind、listen---->lfd ----组织lfd对应结构体(EPOLLIN、void *(回调函数))
epoll_ctl()将lfd及对应结构体 添加到红黑树上进行监听----epoll_wait()监听。----返回满足监听条件的个数。
----传出参数(结构体数组)----回调:cfd = accpet() 满足EPOLLIN对应的客户端 ----将cfd及对应结构体挂到监听红黑树
----启动epoll_wait()监听。----返回满足监听条件的个数。----传出参数(结构体数组)----回调:read客户端发送的小写字符串
----转大写----send回给客户端
epoll反应堆:epoll:epoll_create创建一颗监听红黑树。socket、bind、listen---->lfd ----组织lfd对应结构体(EPOLLIN、void *(回调函数))
epoll_ctl()将lfd及对应结构体 添加到红黑树上进行监听----epoll_wait()监听。----返回满足监听条件的个数。
----传出参数(结构体数组)----回调:cfd = accpet() 满足EPOLLIN对应的客户端
----将cfd及对应结构体(EPOLLIN、void *(回调函数read))挂到监听红黑树
----启动epoll_wait()监听。----返回满足监听条件的个数。----传出参数(结构体数组)----回调:read客户端发送的小写字符串
-===cfd从监听红黑树上摘下。修改它的EPOLLIN->EPOLLOUT / 修改它的回调函数write
====再次将cfd及其对应结构体(EPOLLOUT、void *(回调函数read))----挂到监听红黑树----启动epoll_wait监听
----转大写----send回给客户端