当前位置:网站首页>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 .
边栏推荐
- Keil5 MDK's formatting code tool and adding shortcuts
- Build your own application based on Google's open source tensorflow object detection API video object recognition system (II)
- About the garbled code problem of superstar script
- What to do when programmers don't modify bugs? I teach you
- Zhejiang University Edition "C language programming experiment and exercise guide (3rd Edition)" topic set
- ucore lab2 物理内存管理 实验报告
- Pedestrian re identification (Reid) - Overview
- Nest and merge new videos, and preset new video titles
- [HCIA continuous update] advanced features of routing
- Global and Chinese markets of PIM analyzers 2022-2028: Research Report on technology, participants, trends, market size and share
猜你喜欢

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

What are the commonly used SQL statements in software testing?

Report on the double computer experiment of scoring system based on 485 bus

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

STC-B学习板蜂鸣器播放音乐2.0

Threads and thread pools

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

Build your own application based on Google's open source tensorflow object detection API video object recognition system (I)

MySQL development - advanced query - take a good look at how it suits you

DVWA exercise 05 file upload file upload
随机推荐
CSAPP家庭作业答案7 8 9章
How to learn automated testing in 2022? This article tells you
Global and Chinese markets of Iam security services 2022-2028: Research Report on technology, participants, trends, market size and share
Why can swing implement a form program by inheriting the JFrame class?
[Ogg III] daily operation and maintenance: clean up archive logs, register Ogg process services, and regularly back up databases
Collection collection and map collection
如何成为一个好的软件测试员?绝大多数人都不知道的秘密
Mysql database (V) views, stored procedures and triggers
自动化测试中敏捷测试怎么做?
Description of Vos storage space, bandwidth occupation and PPS requirements
Threads et pools de threads
What is "test paper test" in software testing requirements analysis
Keil5 MDK's formatting code tool and adding shortcuts
[oiclass] share prizes
How to transform functional testing into automated testing?
Detailed introduction to dynamic programming (with examples)
The four connection methods of JDBC are directly coded
Brief description of compiler optimization level
线程及线程池
To brush the video, it's better to see if you have mastered these interview questions. Slowly accumulating a monthly income of more than 10000 is not a dream.