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:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值