zl程序教程

您现在的位置是:首页 >  后端

当前栏目

libevent echo server example

server Example Echo libevent
2023-09-27 14:27:56 时间

libevent is an API that allows you to easily write non-blocking networking apps. It abstracts the differences between poll, select, kqueue, epoll and /dev/poll allowing you to automatically take advantage of the best mechanism provided by the OS you are running on with a fallback to the ubiquitous select. For I/O bound applications this is a great alternative to introducing threads to your application.

This is another one of those examples that I’ve had to provide to people before, usually part of my attempt to get them to use libevent rather than using threads to support multiple connections.

The first example, libevent_echosrv1.c simplifies the basic libevent based server by not properly handling writing to a non-blocking socket.

The second example, libevent_echosrv2.c properly handles writing data by queueing the data to be echoed back to the client with a TAILQ and waiting for libevent to call the write callback, at which point it writes as much data as it can to the socket. If there is more data to be written, the application re-adds the write event so the application is notified when it can write more data. This buffering of data adds a lot of complexity to the first example, but is necessary except for in trivial examples.

Example code: libevent_echosrv-20060829.tar.gz

References:

My TAILQ example post libevent homepage
通过echo_server带你入门brpc! 前文我们介绍过如何编译安装brpc(brpc最新安装上手指南),今天通过echo_server来介绍一下brpc的基本使用方法与细节。