libevent for qt网络模块

libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构

最近在开发im服务器,需要大并发链接。QT默认的是使用select模型的,这种轮询方式非常慢。在高并发连接,我们需要epoll才能发挥linux服务器的性能.而且使用简单,整个服务端代码架构无需修改,设置QT的分发事件就可以使用了,只要在main里面添加 :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

int main(int argc, char *argv[])

{

#ifdef Q_OS_LINUX

QCoreApplication::setEventDispatcher(new EventDispatcherLibEvent);

// qInstallMessageHandler(customMessageHandler);

#endif

QCoreApplication a(argc, argv);

auto *ser=new ConfigServer;

ser->startServer();

return a.exec();

}

在.pro文件添加

Vim

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

linux{

LIBS += -levent_core

SOURCES += ../common/eventdispatcher_libevent/eventdispatcher_libevent.cpp \

../common/eventdispatcher_libevent/eventdispatcher_libevent_config.cpp \

../common/eventdispatcher_libevent/eventdispatcher_libevent_p.cpp \

../common/eventdispatcher_libevent/socknot_p.cpp \

../common/eventdispatcher_libevent/tco_eventfd.cpp \

../common/eventdispatcher_libevent/tco_pipe.cpp \

../common/eventdispatcher_libevent/tco.cpp \

../common/eventdispatcher_libevent/timers_p.cpp

HEADERS += ../common/eventdispatcher_libevent/common.h \

../common/eventdispatcher_libevent/eventdispatcher_libevent.h \

../common/eventdispatcher_libevent/eventdispatcher_libevent_config.h \

../common/eventdispatcher_libevent/eventdispatcher_libevent_config_p.h \

../common/eventdispatcher_libevent/eventdispatcher_libevent_p.h \

../common/eventdispatcher_libevent/libevent2-emul.h \

../common/eventdispatcher_libevent/qt4compat.h \

../common/eventdispatcher_libevent/tco.h \

../common/eventdispatcher_libevent/wsainit.h

}

可以直接跨平台了使用了
附上qt libevent源码下载地址:qt_libevent.zip

http://love.junzimu.com/archives/2657

时间: 2024-12-15 05:38:27

libevent for qt网络模块的相关文章

libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构

最近在开发im服务器,需要大并发链接.QT默认的是使用select模型的,这种轮询方式非常慢.在高并发连接,我们需要epoll才能发挥linux服务器的性能.而且使用简单,整个服务端代码架构无需修改,设置QT的分发事件就可以使用了,只要在main里面添加 : int main(int argc, char *argv[]) {   #ifdef Q_OS_LINUX     QCoreApplication::setEventDispatcher(new EventDispatcherLibEv

libevent for qt的讨论

一直对Qt官方的QtNetwork模块抱有遗憾,Qt自带的网络模块用的是select模型,无法支持高并发的服务器开发.最近在网上看到有个libevent for qt的东西,它直接替换了Qt的select模型,支持epoll模型,所以就支持高并发了.这东西好啊,弥补了Qt的不足,也弥补了我的遗憾.我兴致勃勃的从网上下载了源代码(github地址:https://github.com/sjinks/qt_eventdispatcher_libevent),然后在windows上编译,结果每次都报错

Qt 5.14和Qt Creator工具简介

原文地址:https://blog.csdn.net/somken/article/details/104053605 Qt5简介Qt 5是Qt的最新版本.它使开发人员能够以直观的用户界面针对多个目标开发应用程序,这比以往任何时候都快.Qt 5可以更轻松地解决触摸屏和平板电脑所需的最新UI范式转换. 通过在Qt 5中改进对JavaScript和QML的支持,开发人员可以提高生产力和灵活性,同时仍具有C ++基础和Qt Widget支持.HTML5开发人员将对包含基于Chromium的Qt Web

Qt5 http协议 获取网页数据

一.HTTP协议 Qt网络模块提供的API可以实现基于HTTP(Hyper Text Transport Protocol)协议的应用程序.此外, Qt还可以实现多种基于 协议的应用程序, 如位于OSI 7层应用层的FTP.DNS.SNMP. Qt4.x版本提供了QHttp和QFtp类以支持HTTP和FTP协议.从Qt 5.0 版本开始, 删除了QHttp 和 QFtp 类, 通过QNetworkReply .QNetworkAccessManager.QNetworkRequest类实现基于H

Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)

文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html 本文仅是个人经验总结,若有错误欢迎指教! 最近要做一个跨平台的项目,同时也涉及到网络数据传输,所以考虑采用Qt和Libevent. 1.vs编译libevent 参考网上众多通过VS编译Libevent的文章(http://www.cnblogs.com/luxiaoxun/p/3603399.html),成功编译得到了?libevent.lib.libevent_core.lib

QT 基础(三) pro 文件的认识

工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的理解,先创建一个简单的工程作为实践. [1]创建一个pro文件 1.1 新建proDemo工程.步骤如下:Qt Creator--->New Project--->应用程序--->Qt Widgets Application--->名称为:proDemo(创建路径自己拟定,本地为F:\Source\proStudy)--->类信息保持不变--->完成 1.2 提取pro文件.在

libevent学习之二:Windows7(Win7)下编译libevent

Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译. 一.准备工作 去官网下载最新的稳定发布版本libevent-2.0.22-stable 官网地址:http://libevent.org/ 二.使用VS2012编译 1.解压libevent到C:\Users\zhang\Desktop\libevent-2.0.22-stable 2.打开“VS2012开发人员命令提示”工具,如下图所示. 3.输入指令开始编译,如下图所示. 有网友说编译之前应该在以下3个文

qt http 下载文件

本文章介绍如何利用HTTP从网站上下载文件.在Qt网络编程中,需要用到协议,即HTTP.它是超文本传输协议,它是一种文件传输协议.对于HTTP就不多解释了. 在Qt网络编程中,需要用到协议,即HTTP.它是超文本传输协议,它是一种文件传输协议.这一节中我们将讲解如何利用HTTP从网站上下载文件.使用的编程环境为Windows下基于Qt4.6.3的Qt Creator 1.3.1 一.最简单的实现. 1.我们新建Qt 4 Gui QApplication . 工程名为“http”,然后选中QtNe

qt之fillder抓包(QT网络版有一些具体的坑)

最近项目中使用到了Qt的网络库,在用的过程中也发现了不少坑和问题,本文仅仅作为记录,方便日后查阅.    因为我们整个客户端的gui都是使用qt来完成的,心想qt既然有网络库,而且真心觉着qt封装的控件还是不错的,所以就使用了qt的网络库,说实话qt的网络库封装的确实比较好用,所以开发过程就有条不紊的进行着,一直也没有遇到什么比较大的问题,直到开发完大半部分网络模块,交由产品测试时出现了一个问题(还是测试同志比较给力啊),测试同学发现使用fillder抓不到qt的网络请求包,这虽然对开发来说不是