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
libevent for qt网络模块的更多相关文章
- libevent for qt的讨论
一直对Qt官方的QtNetwork模块抱有遗憾,Qt自带的网络模块用的是select模型,无法支持高并发的服务器开发.最近在网上看到有个libevent for qt的东西,它直接替换了Qt的sele ...
- Qt 网络模块如何使用?
1.网络模块介绍 类名 说明 中文 QAbstractNetworkCache The interface for cache implementations 缓存实现的接口 QNetworkCach ...
- Qt网络模块如何使用(表格)
1.网络模块介绍 类名 说明 中文 QAbstractNetworkCache The interface for cache implementations 缓存实现的接口 QNetworkCach ...
- GeoServer-REST应用:基于Qt网络编程一键同步发布空间数据和样式至GeoServer
@ 目录 简介 配置 步骤 1.引入Qt网络模块 2.创建网络管理.网络响应.网络请求 3.创建工作空间 4.创建数据存储并上传数据 5.上传样式文件 6.图层发布 6.图 ...
- Primecoin在windows上的部署和启动服务
Primecoin在windows上的部署和启动服务: 一.从官方获得Primecoin的windows版安装包: 二.一路像安装客户端一样的安装: 三.安装成功后它会自动弹出客户端运行,同步数据, ...
- bitcoind
Bitcoin Core Daemon version v0.15.1.0-g7b57bc998f Usage: bitcoind [options] Start Bitcoin Core Daemo ...
- Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)
文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html 本文仅是个人经验总结,若有错误欢迎指教! 最近要做一个跨平台的项目,同时也涉及到网络 ...
- Qt 工程 pro文件
工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下.于此备录,分享共勉. 为了更好的理解,先创建一个简单的工程作为实践. [1]创建一个pro文件 1.1 新建proDemo工程.步骤如下: ...
- Qt之Threads和QObjects
简述 QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots). 更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程 ...
随机推荐
- VBS 操作注册表 十六进制
使用VBS操作注册表,通常使用RegRead/RegWrite/RegDelete方法,如: RegRead: 'read.vbs(将以下代码存为read.vbs文件) Dim OperationRe ...
- c++ 07
一.多重继承 1)子类同时拥有两个或两个以上的基类,同时继承了所有基类的属性和行为. 销售员 经理 \ / 销售经理 汽车 客用特性 商用特性 \ | / ...
- JAVA大整数傻瓜入门
http://blog.csdn.net/skiffloveblue/article/details/7032290..先记着
- 【POJ3299】Humidex(简单的数学推导)
公式题中已经给出,直接求解即可. #include <iostream> #include <cstdlib> #include <cstdio> #include ...
- hdu 5432 Pyramid Split(二分搜索)
Problem Description Xiao Ming is a citizen who's good at playing,he has lot's of gold cones which ha ...
- struts——拦截器
什么是拦截器 拦截器(Interceptor)是Struts 2的一个强有力的工具,有许多功能都是构建于它之上,如国际化(前两篇博客介绍过).转换器,校验等. 拦截器是动态拦截Action调用的对象. ...
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6666491 在前面一篇文章Android系统匿 ...
- Swift——(一)为Swift内置类型加入属性
在看苹果官方的Swift Language的时候,遇到实验:Write an extension for the Double type that add an absoluteValue prope ...
- LinkedList的分析(转)
一.源码解析 1. LinkedList类定义. public class LinkedList<E> extends AbstractSequentialList<E> im ...
- SQLLoader4(数据文件中的列与表中列不一致情况-filler)
A.数据文件中字段个数少于表中列字段个数,但数据文件中缺少的列,在表定义中可以为空.----- 这种情况是比较简单的,只需要将数据文件中数据对应的列的名字写到控制文件中即可.因为SQL*Loader是 ...