文档首页 > > 移植指南> 网络库> 移植Libevent

移植Libevent

分享
更新时间:2020/06/03 GMT+08:00

介绍

简要介绍

Libevent是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:

  • 事件驱动( event-driven),高性能;
  • 轻量级,专注于网络,不如ACE那么臃肿庞大;
  • 源代码相当精炼、易读;
  • 跨平台,支持Windows、Linux、*BSD和Mac Os;
  • 支持多种I/O多路复用技术, epoll、 poll、dev/poll、select和kqueue等;
  • 支持I/O,定时器和信号等事件;
  • 注册事件优先级。

语言:C

一句话概述:一个事件通知库

开源协议:BSD

建议的版本

根据实际需要选择版本,本文档以“libevent-2.1.10-stable”为例进行说明。

环境要求

云服务器要求

本文以KC1实例测试,配置如表1所示。

表1 云服务器配置

项目

说明

规格

kc1.large.2 | 2vCPUs | 4GB

磁盘

系统盘:高IO(40GB)

操作系统要求

操作系统要求如表2所示。

表2 操作系统要求

项目

说明

下载地址

CentOS

7.6

在公共镜像中已提供。

Kernel

4.14.0-115

在公共镜像中已提供。

配置编译环境

安装wget工具。

yum install wget -y

获取源码

获取“libevent-2.1.10-stable”源码包。

cd /usr/local/src

wget https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz

编译和安装

  1. 解压软件包。

    cd /usr/local/src

    tar -zxvf libevent-2.1.10-stable.tar.gz

  2. 进入libevent的安装目录。

    cd libevent-2.1.10-stable

  3. 生成Makefile文件

    ./configure

  4. 编译安装libevent。

    “-j”参数可利用多核CPU加快编译速度,在本示例中,使用的是2核CPU,所以此处为“-j2”。

    可通过下述命令查询CPU核数:

    cat /proc/cpuinfo| grep "processor"| wc -l

    make -j2

    make install

运行和验证

通过到libevent官方提供的demo,测试libevent是否安装完成。

  1. 进入sample目录

    cd /usr/local/src/libevent-2.1.10-stable/sample

  2. 查看例子hello-world监控的端口

    grep PORT hello-world.c

    返回内容如下所示,表示监控的端口为9995,可根据实际需要修改端口号,本例采用默认端口。

    [root@ecs sample]# grep PORT hello-world.c
    static const int PORT = 9995;
    sin.sin_port = htons(PORT);

    云服务器需要开放监听的端口,如果未开放,请参考如下链接处理:

    https://support.huaweicloud.com/trouble-ecs/zh-cn_topic_0191526704.html

  3. 服务端:执行hello-world。

    ./hello-world

  4. 客户端:打开另外一个终端,输入如下命令。

    nc 127.0.0.1 9995

    上述命令会如果报错“bash: nc: command not found”,可通过如下命令安装nc工具,然后再次输入上述命令。

    yum install nc -y

  5. 查看返回

    返回内容如下所示,表示安装已经完成。

    服务端返回:

    [root@ecs sample]# ./hello-world 
    flushed answer
    

    客户端返回

    [root@ecs ~]# nc 127.0.0.1 9995
    Hello, World!
    

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问