C++ Libevent 链接监听器evconnlistener


普通event

高级event bufferevent

链接监听器 evconnlistener


链接监听器 evconnlistener

更高级的封装, 封装了socket,bind,listen,accept 这几个函数。

struct evconnlistener *evconnlistener_new_bind(
	struct event_base *base,
    evconnlistener_cb cb,
    void *ptr,
    unsigned flags,
    int backlog,
    const struct sockaddr *sa,
    int socklen
)
  • base 事件 根节点
  • cb 回调,每当有新的连接时候调用
  • ptr 回调参数
  • flags
    • LEV_OPT_LEAVE_SOCKETS_BLOCKING 文件描述符为阻塞
    • LEV_OPT_CLOSE_ON_FREE 关闭时自动释放
    • LEV_OPT_REUSEABLE 端口复用
    • LEV_OPT_THREADSAFE 奉陪锁,线程安全
  • backlog 选择-1,会自动选择一个合适的值
  • sa 是服务器需要绑定的ip端口信息
  • addr描述长度
  1. 释放监听器
void evconnlistener_free(struct evconnlistener *lev);

3.生效/失效

int evconnlistener_enable(struct evconnlistener *lev);
int evconnlistener_disable(struct evconnlistener *lev);

4.信号

#define evsignal_new(b,x.cb,arg)
	event_new((b),(x),EV_SIGNAL|EV_PERSIST,(cb),(arg))

总结使用:

使用连接监听器,在回调函数中,再定义使用 高级回调函数 buferevent

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页