libevent:windows环境配置+QT使用

这篇具有很好参考价值的文章主要介绍了libevent:windows环境配置+QT使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

libevent是什么

编译

QT使用

测试代码


  • libevent是什么

Fast portable non-blocking network programming with Libevent

http://www.wangafu.net/~nickm/libevent-book/TOC.html

这篇文档讲的很清楚,尤其是Chapter 1: A tiny introduction to asynchronous IO.,基本上讲清楚了大多数的内容

  • 编译

环境:

1、win10 64位
2、vs2015专业版(nmake)/Cmake
3、libevent 2.1.11(官方下载链接)
4、libevent解压的文件夹目录为:“E:\libevent\libevent-2.1.11-stable”

 参考文章: vs2015编译方式和cmake编译方式.

  • QT使用

根据编译方式不同,配置QT环境.以下使用VS2015方式

创建项目libevent_test.

新建libevent目录下创建libevent.pri文件,并在libevent_test.pro文件中添加

QT       +=  network

INCLUDEPATH += $$PWD/libevent  #通过路径添加子文件内容
include($$PWD/libevent/libevent.pri) #添加子文件夹所需pri文件

将编译生成的文件放置于libevent目录下

E:\libevent\libevent-2.1.11-stable\include下                        event2文件夹及其内文件

E:\libevent\libevent-2.1.11-stable\WIN32-Code\nmake下   evconfig-private.h文件和event2文件夹及其内文件

E:\libevent\libevent-2.1.11-stable下                                     libevent.lib,libevent_core.liblibevent_extras.lib文件

 libevent.pri文件添加

INCLUDEPATH += -L$$PWD
LIBS += -ladvapi32 -lws2_32 -lwsock32
LIBS += -L$$PWD/ -llibevent -llibevent_core -llibevent_extras
  • 测试代码

 main.cpp

#include <QApplication>
#include <QDebug>
#include <WinSock2.h>
#include <windows.h>
#include "include/event2/listener.h"
#include "include/event2/buffer.h"
#include "include/event2/bufferevent.h"
#include "include/event2/event.h"
#include "include/event2/event_compat.h"
#pragma comment(lib, "ws2_32.lib")

static  void echo_read_cb(struct bufferevent *bev,void *ctx)
{
    struct evbuffer *input = bufferevent_get_input(bev);
    struct evbuffer *output = bufferevent_get_output(bev);

    evbuffer_add_buffer(output,input);
    qDebug() << " port  read " ;
}

static  void echo_event_cb(struct bufferevent *bev,short events,void *ctx)
{
    if(events & BEV_EVENT_ERROR)
        qDebug()<< "error form bufferevent";
    if(events & (BEV_EVENT_EOF | BEV_EVENT_ERROR))
        bufferevent_free(bev);
}

static  void accept_conn_cb(struct evconnlistener *listener,evutil_socket_t fd,struct sockaddr *address,int socklen,void *ctx)
{
    struct  event_base *base = evconnlistener_get_base(listener);
    struct bufferevent *bev = bufferevent_socket_new(base,fd,BEV_OPT_CLOSE_ON_FREE);

    bufferevent_setcb(bev,echo_read_cb,NULL,echo_event_cb,NULL);
    bufferevent_enable(bev,EV_READ|EV_WRITE);
    qDebug() << " port  connect ";
}

static  void accept_error_cb(struct evconnlistener *listener,void *ctx)
{
    struct event_base *base = evconnlistener_get_base(listener);
    event_base_loopexit(base,NULL);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    WORD sockVerson = MAKEWORD(2, 2);
    WSADATA wsaData;
    if (WSAStartup(sockVerson, &wsaData))
    {
        qDebug() << "init WinSock fail";
        return 1;
    }

    qDebug() << "init WinSock yes";
    struct event_base *base;
    struct evconnlistener *listener;
    struct sockaddr_in sin;

    int port = 9876;

    base = event_base_new();

    memset(&sin,0,sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = htonl(0);
    sin.sin_port = htons(port);

    listener = evconnlistener_new_bind(base,accept_conn_cb,NULL,
                                       LEV_OPT_CLOSE_ON_FREE|LEV_OPT_REUSEABLE,-1,(struct sockaddr*)&sin,sizeof(sin));
    if(!listener)
    {
        qDebug()<<"could't create listener";
        return 1;
    }
    evconnlistener_set_error_cb(listener,accept_error_cb);
    event_base_dispatch(base);

    qDebug()<<"thread quit";

    return a.exec();
}

验证连接

libevent:windows环境配置+QT使用,qt,开发语言,libevent

telnet 连接 

libevent:windows环境配置+QT使用,qt,开发语言,libevent

连接成功

libevent:windows环境配置+QT使用,qt,开发语言,libevent文章来源地址https://www.toymoban.com/news/detail-596224.html

到了这里,关于libevent:windows环境配置+QT使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows下的QT系统开发环境搭建

            QT是一款由Qt Company开发的跨平台C++图形用户界面 应用程序 开发框架。它既可以开发 GUI 程序,也可用于开发非GUI程序,比如 控制台 工具和服务器。Qt是面向对象的框架,使用特殊的 代码 生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容

    2024年02月09日
    浏览(49)
  • Qt 配置 ROS 开发环境

    原生的 Qt 框架是无法方便快捷地开发 ROS 项目的(比如不能创建 ROS 工作空间和功能包)。为此,ROS industrial提供了一个基于 Qt Creator 的 ROS 集成开发环境插件 —— ros_qtc_plugin ,可以帮助 ROS 开发人员在 Qt Creator 中更轻松地编写、调试和测试 ROS 程序。 本文将着手探讨如何在

    2024年02月14日
    浏览(32)
  • windows11下Qt6.5开发环境安装及QT for Android环境搭建(含虚拟机的创建)

    最近想升级Qt6.5及顺便配置Android开发环境。于是在网上找了各种教程,结果在配置Android开发环境都以失败告终。最终花了很长时间才搞掂。接下来分享比较好的安装方法以及安装注意事项。 建议用中科大或清华的镜像下载在线安装器,官网的很慢。链接如下: 下载在线安装

    2024年02月13日
    浏览(67)
  • 记录:Qt Creator 10配置安卓开发环境

    Qt Creator 现在的安卓开发环境配置相比老版本方便了不少,本文以目前在线安装版的 Qt Creator 10.0.2 + Qt 5.15 / Qt 6.5 为例做演示(有些文件可能会因为网络问题需要科学上网才能下载)。 https://adoptium.net/zh-CN/temurin/releases/ Oracle 的 JDK 有商业授权问题,所以直接下 OpenJDK 就行了。

    2024年02月10日
    浏览(45)
  • windows下qt creator 配置编译环境gcc,g++,gdb,cmake

    MSVC :即Microsoft Visual C++ Compiler,即微软自己的编译器 MinGW :我们都知道GNU在Linux下面鼎鼎大名的gcc/g++,MinGW则是指Minimalist GNU for Windows的缩写 这里我们选择MinGW,至于Qt中,这两种模式的区别,自行查阅相关资料 在Qt 安装完成之后,gcc.exe,g++.exe,qmake.exe就已经有了,我们可

    2024年02月09日
    浏览(51)
  • 1. linux系统下在QT中配置OPenCV开发环境

    1. 说明: 在Linux系统下配置OpenCV的开发环境,需要在官网上下载源码,并使用CMake工具对源码进行编译,与在Windows系统中配置相比复杂许多,本文linux系统为linux minit,opencv是最新版本4.7.0,不过对于linux和opencv的版本要求好像不高。 效果展示: 2. 配置步骤: 2.1 第一步:下载

    2024年02月16日
    浏览(40)
  • Qt5.15.2安卓Android项目开发环境配置

    官方下载:https://download.qt.io/archive/qtcreator/4.11/4.11.2/ 镜像下载:https://mirrors.cloud.tencent.com/qt/archive/qtcreator/4.11/4.11.2/ 官方更新器内部下载 参考:https://blog.csdn.net/weixin_41013202/article/details/129957693 https://adoptium.net/zh-CN/temurin/releases/ (1) Android SDK Platform 最新版(现在是33) (2)

    2024年02月14日
    浏览(45)
  • Ubuntu 20.04下安装配置Qt开发环境的步骤

    下面是在Ubuntu 20.04下安装配置Qt开发环境的步骤: 安装Qt Creator 在终端中输入以下命令以安装Qt Creator: 在终端中输入以下命令以安装Qt 5开发库: 安装g++和gcc编译工具 配置Qt Creator 打开Qt Creator,进入“Tools”菜单,选择“Options”,在弹出的对话框中选择“Build Run”,然后选择

    2024年02月15日
    浏览(50)
  • Qt5.12.6配置Android Arm开发环境(Linux)

    1.安装jdk 2.安装android studio 3.安装sdk 与ndk  设置代理  安装SDK工具  安装SDK Platform 安装QT   选择JDK 1.8安装路径,SDK与NDK路径  如出现Platform SDK或者Platform Build Tools未安装,点击Update Installed  配置成功后可看到ARMv7与AMD-v8a kits Qt Version也可看到ARMv7与AMD-v8a   如果 有安装了CMake,也

    2024年01月21日
    浏览(47)
  • Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131931309 上一篇:没有了 下一篇:敬请期待…   麒麟系统上做全球北斗定位终端开发,调试工具要做一个windows版本方便校对,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标

    2024年02月15日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包