基于 epoll 的高并发 TCP 服务器

在linux环境下,可以用 epoll 实现高性能/高并发的服务器。因为只需在linux下,不想用libevent等较为复杂的库,所以自己造了个小轮子,主要有以下特点:

  • 纯c实现
  • 接收实现了个可自动扩展的buffer,用户无需自己维护,只要关心业务逻辑
  • 回调函数机制,灵活方便

主要接口:

typedef void(*recv_callback)(int, const char *, unsigned int); 

//handler 为用户主要实现的业务处理回调
poll_server_t *epoll_server_init(unsigned port, recv_callback handler, int max_client);
void epoll_server_start(epoll_server_t *server);
void epoll_server_delete(epoll_server_t *server);

下面为一个 echo server的例子:

#include <stdio.h>
#include <stdlib.h>
#include "epollServer.h"

int main(int argc, char *argv[])
{
    epoll_server_t *evs;

    if(argc < 2){
       printf("Usage: %s [port]\n", argv[0]);
       return -1;
                                    
    }

    evs = epoll_server_init(atoi(argv[1]), recv_echo_callback, 1024);
    if(NULL == evs){
        printf("epoll_server_init failed.\n");
        return -1;
    }

    epoll_server_start(evs);
    epoll_server_delete(evs);

    return 0;
}

void recv_echo_callback(int cliFd, const char *data, unsigned int len)
{
    send(cliFd, data, len, 0);
}

具体实现放到了github:https://github.com/NerDante/epollServer

欢迎star,错误指正。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值