赞
踩
- struct event *ev;
- struct event *evennt_new(struct event_base *base,evutil_socket_t fd,short what,event_callback_fn cb;void *arg);
- base:event_base_new()返回值。
- fd :绑定到event上的 文件描述符。
- what:对应的事件(r、w、e)
- EV_READ 一次 读事件
- EV_WRTIE 一次 写事件
- EV_PERSIST 持续触发。结合event_base_dispatch函数使用,生效。
- cb:一旦事件满足监听条件,回调的函数。
- typedef void(*event_callback_fn)(evutil_socket_t fd, short,void *)
- arg:回调函数的参数。
- 返回值:成功创建的 event
- int event_add(struct event *ev,const struct timeval *tv);
- ev: event_new()的返回值。
- tv:NULL
- int event_del(struct event *ev);
- ev:event_new()的返回值。
- int event_free(struct event *ev);
- ev:event_new()的返回值。
#include<event2/buffereevent.h>
- struct bufferent *ev;
- struct bufferevent *bufferevent_socket_new(struct event_base *base,evutil_socket_t fd,enum bufferevent_options options);
- base: event_base
- fd: 封装到bufferevent内的fd
- options: BEV_OPT_CLOSE_ON_FREE
- 返回:成功创建的bufferevent事件对象。
- void bufferevent_socket_free(struct bufferevent *ev);
- 对比event:event_new(fd,callback); event_add() --- 挂到event_base上。
- bufferevent_socket_new(fd) bufferevent_setcb(callback)
-
- void bufferevent_setcb(struct bufferevent*bufev, bufferevent_data_cb reacb, bufferevent_data_cb writecb, bufferevent_data_cb eventcb , void *cbarg );
-
- bufev:bufferevent_socket_new()返回值
- readcb:设置bufferevent 度缓冲,对应回调 read_cb{ bufferevent_read() 读数据 }
- writecb:设置bufferevent 写缓冲,对应回调write_cb{ } ---给调用者,发送写成功通知。 可以NULL
-
- eventcb:设置事件回调。 也可以传NULL
- typedef void(*bufferevent_data_cb)(struct bufferevent *bev,void*ctx);
- void event_cb(struct bufferevent *bev, short events, void *cbarg)
- {
- 。。。。。
- }
- cbarg:上述回调函数使用的参数。
- read 回调函数类型:
- typedef void(*bufferevent_data_cb)(struct bufferevent *bev,void*ctx);
- void read_cb(struct bufferevent *bev,void *cbarg)
- {
- .....
- bufferevent_read(); ---read()
- }
- bufferevent_read()函数的原型:
- size_t bufferevent_read(struct bufferevent *bev, void *buf, size_t bufsize);
-
- write 回调函数类型:
- int bufferevent_write(struct bufferevent *bufev, const void*data,size_t size);
- void bufferevent_enable(struct bufferevent *bufev, short events); 启动
- events: EV_READ、EV_WRITE、EV_READ|EV_WRITE
- 默认、write 缓冲区 enable、read缓冲区是disable
- bufferent_enable(event,EV_READ); --开启读缓冲
- socket();bind();listen();accept();
- struct evconnlistener *listner
- 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:event_base
- cb:回调函数。 一旦被回调,说明在其内部应该与客户端完成,数据读写操作,进行通信。
- ptr:回调函数的参数
- flags:LEV_OPT_CLOSE_ON_FREE | LEV_OPT_REUSEABLE
- backlog:listen() 2参。 -1表最大值
- sa:服务器自己的地址结构体
- socklen:服务器自己的地址结构体大小。
- 返回值:成功创建的监听器。
- socket(); connect();
- int bufferevent_socket_connect(struct bufferevent *bev, struct sockaddr *address, int addrlen);
- bev:bufferevent 事件对象(封装了fd)
- address、len:等同于connect()参2/3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。