libevent 一個簡單的event示例

jopen 10年前發布 | 35K 次閱讀 libevent 網絡工具包

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>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!