
基于Libevent的Qt网络模块,可替代Qt的Select模型,支持Epoll、Select和Poll,易于使用。
5星
- 浏览量: 0
- 大小:None
- 文件类型:RAR
简介:
这是一款基于Libevent开发的Qt网络模块,可以轻松取代传统的Select模型。它不仅兼容Epoll、Select及Poll三种事件机制,并且拥有便捷易用的特性,满足高效网络编程需求。
最近在开发IM服务器时需要处理大并发连接问题。QT默认使用的是select模型,这种轮询方式在高并发情况下性能较差。为了充分发挥Linux服务器的性能并简化操作,可以采用epoll机制,并且整个服务端代码架构无需修改就可以直接实现。
具体改动如下:
1. 在main文件中添加以下内容:
```cpp
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();
}
```
2. 在pro文件中添加以下内容:
```cpp
linux{
LIBS += -levent -lcore
SOURCES += common/eventdispatcher/libevent/eventdispatcher_libevent.cpp \
common/eventdispatcher/libevent/config.cpp \
common/eventdispatcher/libevent/pipe.cpp \
...
HEADERS += common/eventdispatcher/libevent/common.h \
common/eventdispatcher/libevent/eventdispatcher_libevent.h
...
}
```
以上改动完成后,就可以实现跨平台使用了。
全部评论 (0)


