libevent 一个简单的event示例
jopen
11年前
libevent的一个入门event示例及说明。本示例程序使用libevent监控一个处于监听状态的tcp服务端socket,
并在有连接进来时打印一条消息。
#include <event.h> int sock_fd; // tcp侦听句柄 // 事件回调函数,当有socket连接时执行 void event_occurs(int fd, short evt, void *arg) { if ( evt == EV_READ && fd == sock_fd ) printf("new connection\n"); else if ( evt == EV_TIMEOUT) printf("event timeout\n"); } int main (int argc, char **argv) { int sock_fd = open_server_socket(); // 调用一个自定义的socket端口侦听函数 // 返回socket句柄。 struct event evt; // 声明一个event struct timeval timeout = {30, 0}; // 设置一次event超时为30秒 event_init(); // 初始化当前libevent, 在调用其他libevent函数之前调用一次 // 将socket句柄、监控的触发事件(EV_READ),事件发生后的回调函数、 // 回调函数参数,绑定到evt中。 event_set(&evt, sock_fd, EV_READ, event_occurs, NULL); event_add(&evt, &timeout); // 设置一次监控的超时时间 event_dispach(); // 执行事件监控,直至超时或事件发生 // 如果要在事件发生后连续执行,需要重新add和dispatch close(sock_fd); return 0; }