当前位置:网站首页>Brief introduction to libevent
Brief introduction to libevent
2022-07-06 15:15:00 【Work hard to become a c++ Engineer】
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() Return value .
fd : Bound to the event Upper File descriptor .
what: The corresponding event (r、w、e)
EV_READ once Read events
EV_WRTIE once Write events
EV_PERSIST Continue to trigger . combination event_base_dispatch Function USES , take effect .
cb: Once the event meets the listening conditions , Function of callback .
typedef void(*event_callback_fn)(evutil_socket_t fd, short,void *)
arg: The parameters of the callback function .
Return value : Successfully created eventint event_add(struct event *ev,const struct timeval *tv);
ev: event_new() The return value of .
tv:NULLint event_del(struct event *ev);
ev:event_new() The return value of .int event_free(struct event *ev);
ev:event_new() The return value of . #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: Package to bufferevent Internal fd
options: BEV_OPT_CLOSE_ON_FREE
return : Successfully created bufferevent Event object .
void bufferevent_socket_free(struct bufferevent *ev); contrast event:event_new(fd,callback); event_add() --- Hang up event_base On .
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() Return value
readcb: Set up bufferevent Degree buffer , Corresponding callback read_cb{ bufferevent_read() Reading data }
writecb: Set up bufferevent Write buffer , Corresponding callback write_cb{ } --- To the caller , Send write success notification . Sure NULL
eventcb: Set event callback . Also can be transmitted NULL
typedef void(*bufferevent_data_cb)(struct bufferevent *bev,void*ctx);
void event_cb(struct bufferevent *bev, short events, void *cbarg)
{
.....
}
cbarg: The parameters used by the above callback function .
read Callback function type :
typedef void(*bufferevent_data_cb)(struct bufferevent *bev,void*ctx);
void read_cb(struct bufferevent *bev,void *cbarg)
{
.....
bufferevent_read(); ---read()
}
bufferevent_read() Prototypes of functions :
size_t bufferevent_read(struct bufferevent *bev, void *buf, size_t bufsize);
write Callback function type :
int bufferevent_write(struct bufferevent *bufev, const void*data,size_t size); void bufferevent_enable(struct bufferevent *bufev, short events); start-up
events: EV_READ、EV_WRITE、EV_READ|EV_WRITE
Default 、write buffer enable、read The buffer is disable
bufferent_enable(event,EV_READ); -- Turn on the read buffer 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: Callback function . Once called back , Explain that it should be completed internally with the client , Data reading and writing operations , communicate .
ptr: The parameters of the callback function
flags:LEV_OPT_CLOSE_ON_FREE | LEV_OPT_REUSEABLE
backlog:listen() 2 ginseng . -1 Table max
sa: The server's own address structure
socklen: The size of the server's own address structure .
Return value : Successfully created listener .socket(); connect();
int bufferevent_socket_connect(struct bufferevent *bev, struct sockaddr *address, int addrlen);
bev:bufferevent Event object ( Encapsulates the fd)
address、len: Equate to connect() ginseng 2/3- 1. establish event_base
- 2. establish bufferevent Event object .bufferevent_socket_new();
- 3. Use bufferevent_setcb() Function gives bufferevent Of read、write、event Set the callback function .
- 4. When the monitored event is satisfied ,read_cb Will be called , Inside it bufferevent_read(); read
- 5. Use evconnlistener_new_bind Create a listening server , Set its callback function , When a client successfully connects , This callback function will be called .
- 6. encapsulation listner_cb() Inside the function . Complete communication with the client .
- 7. Set the read buffer 、 Write buffered Enable state enable、disable
- 8. Start cycle event_base_dispath();
- 9. Release the connection
- 1. establish event_base
- 2. Use bufferevent_socket_new() Create a that communicates with the tracking server bufferevnet Event object
- 3. Use bufferevent_socket_connect() Connect The server
- 4. Use bufferevent_setcb() to bufferevnet Object's read、write、event Set callback
- 5. Set up bufferenet Object's read / write buffer enable/disable
- 7. Start cycle event_base_dispath();
- 8. Release the connection

- 1.getline() obtain http The first line of the agreement .
- 2. Split... From the first line GET、 file name 、 Protocol version . Get the file name requested by the user .
- 3. Judge whether the file exists .stat()
- 4. Determine file or directory .
- 5. It's a document --open--read -- Write to the browser
- 6. First write http Reply protocol header :http/1.1 200 ok
- 7. Write file data .
边栏推荐
- Stc-b learning board buzzer plays music
- Global and Chinese markets of Iam security services 2022-2028: Research Report on technology, participants, trends, market size and share
- 基于485总线的评分系统双机实验报告
- [HCIA continuous update] working principle of static route and default route
- The number of reversing twice in leetcode simple question
- Interface test interview questions and reference answers, easy to grasp the interviewer
- 软件测试Bug报告怎么写?
- Cadence physical library lef file syntax learning [continuous update]
- Contest3145 - the 37th game of 2021 freshman individual training match_ A: Prizes
- What are the business processes and differences of the three basic business modes of Vos: direct dial, callback and semi direct dial?
猜你喜欢
软件测试工作太忙没时间学习怎么办?

Sorting odd and even subscripts respectively for leetcode simple problem

Fundamentals of digital circuits (II) logic algebra

The latest query tracks the express logistics and analyzes the method of delivery timeliness

How to learn automated testing in 2022? This article tells you

The minimum number of operations to convert strings in leetcode simple problem

CSAPP家庭作业答案7 8 9章
Future trend and planning of software testing industry
软件测试面试回答技巧
Do you know the performance testing terms to be asked in the software testing interview?
随机推荐
[pytorch] simple use of interpolate
[200 opencv routines] 98 Statistical sorting filter
Do you know the performance testing terms to be asked in the software testing interview?
线程及线程池
软件测试需求分析之什么是“试纸测试”
Build your own application based on Google's open source tensorflow object detection API video object recognition system (I)
What if software testing is too busy to study?
[HCIA continuous update] working principle of static route and default route
With 27K successful entry ByteDance, this "software testing interview notes" has benefited me for life
In Oracle, start with connect by prior recursive query is used to query multi-level subordinate employees.
Introduction to variable parameters
ucore lab1 系统软件启动过程 实验报告
Global and Chinese markets for complex programmable logic devices 2022-2028: Research Report on technology, participants, trends, market size and share
What to do when programmers don't modify bugs? I teach you
Build your own application based on Google's open source tensorflow object detection API video object recognition system (II)
Réponses aux devoirs du csapp 7 8 9
How to write the bug report of software test?
A method and implementation of using VSTO to prohibit excel cell editing
Capitalize the title of leetcode simple question
Why can swing implement a form program by inheriting the JFrame class?