libevent 一個簡單的event示例
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; }</pre>