libevent echo server example

简介:

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:

目录
相关文章
|
5月前
|
关系型数据库 MySQL Linux
Linux下MySQL起动报错The server quit without updating PID file
Linux下MySQL起动报错The server quit without updating PID file
|
关系型数据库 MySQL Linux
Linux连接MySQL时的错误:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
连接本地的MySQL数据库引擎时候出现的错误。用mysql_error()函数获取到错误提示:
|
11月前
|
关系型数据库 MySQL
The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
166 0
|
监控
ZABBIX启动时报: “/tmp/zabbix_server_alerter.sock“ is used by another“/tmp/zabbix_server_alerter.sock“
ZABBIX启动时报: “/tmp/zabbix_server_alerter.sock“ is used by another“/tmp/zabbix_server_alerter.sock“
97 0
|
Linux C语言
Centos7安装redis6.0.7出错:make[1]: *** [server.o] Error 1 make[1]: Leaving directory `/opt/redis-6.0.7/s
Centos7安装redis6.0.7出错:make[1]: *** [server.o] Error 1 make[1]: Leaving directory `/opt/redis-6.0.7/s
Centos7安装redis6.0.7出错:make[1]: *** [server.o] Error 1 make[1]: Leaving directory `/opt/redis-6.0.7/s
|
存储
通过echo_server带你入门brpc!
前文我们介绍过如何编译安装brpc(brpc最新安装上手指南),今天通过echo_server来介绍一下brpc的基本使用方法与细节。
714 0
|
监控 Linux 关系型数据库