当前位置:网站首页>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 .
边栏推荐
- Mysql database (V) views, stored procedures and triggers
- Global and Chinese markets of electronic grade hexafluorobutadiene (C4F6) 2022-2028: Research Report on technology, participants, trends, market size and share
- Contest3145 - the 37th game of 2021 freshman individual training match_ A: Prizes
- Sorting odd and even subscripts respectively for leetcode simple problem
- 软件测试面试回答技巧
- Stc-b learning board buzzer plays music 2.0
- Why can swing implement a form program by inheriting the JFrame class?
- JDBC introduction
- Global and Chinese markets of cobalt 2022-2028: Research Report on technology, participants, trends, market size and share
- MySQL数据库(二)DML数据操作语句和基本的DQL语句
猜你喜欢

150 common interview questions for software testing in large factories. Serious thinking is very valuable for your interview

想跳槽?面试软件测试需要掌握的7个技能你知道吗

如何成为一个好的软件测试员?绝大多数人都不知道的秘密

Logstack introduction and deployment -- elasticstack (elk) work notes 019

Example 071 simulates a vending machine, designs a program of the vending machine, runs the program, prompts the user, enters the options to be selected, and prompts the selected content after the use

安全测试入门介绍

Sleep quality today 81 points

Practical cases, hand-in-hand teaching you to build e-commerce user portraits | with code

Interface test interview questions and reference answers, easy to grasp the interviewer

Stc-b learning board buzzer plays music
随机推荐
UCORE lab1 system software startup process experimental report
Common Oracle commands
Sleep quality today 81 points
The salary of testers is polarized. How to become an automated test with a monthly salary of 20K?
Face and eye recognition based on OpenCV's own model
Differences between select, poll and epoll in i/o multiplexing
Database monitoring SQL execution
Global and Chinese market of RF shielding room 2022-2028: Research Report on technology, participants, trends, market size and share
Logstack introduction and deployment -- elasticstack (elk) work notes 019
基于485总线的评分系统双机实验报告
Leetcode simple question: check whether two strings are almost equal
Fundamentals of digital circuits (I) number system and code system
Programmers, how to avoid invalid meetings?
Pedestrian re identification (Reid) - data set description market-1501
MySQL数据库(一)
About the garbled code problem of superstar script
MySQL数据库(二)DML数据操作语句和基本的DQL语句
Global and Chinese markets of PIM analyzers 2022-2028: Research Report on technology, participants, trends, market size and share
Interview answering skills for software testing
Réponses aux devoirs du csapp 7 8 9