1. 程式人生 > >libevent for qt網路模組,直接替換qt的select模型,支援epoll,select,pool.使用非常簡單,無需修改以前的程式碼結構

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 EventDispatcherLibEvent);
   // qInstallMessageHandler(customMessageHandler);
  #endif


  QCoreApplication a(argc, argv);


  auto *ser=new ConfigServer;
  ser->startServer();


  return a.exec();
}
在.pro檔案新增

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原始碼下載地址:http://download.csdn.net/detail/rushroom/7968573

相關推薦

libevent for qt網路模組,直接替換qtselect模型,支援epoll,select,pool.使用非常簡單,無需修改以前程式碼結構

最近在開發im伺服器,需要大併發連結。QT預設的是使用select模型的,這種輪詢方式非常慢。在高併發連線,我們需要epoll才能發揮linux伺服器的效能.而且使用簡單,整個服務端程式碼架構無需修改,設定QT的分發事件就可以使用了,只要在main裡面新增 : int m

使用 libevent 和 libev 提高網路應用效能——I/O模型演進變化史

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Qt網路程式設計之一http

     Qt網路程式設計,其實主要就是QNetworkAccessManager、QNetworkRequest和QNetworkReply這三個類的主要內容。在之前,Qt網路程式設計主要是使用QHttp等類,但是現在在幫助手冊中這些類已經標記為過時的,所以,現在用

坦克大戰 八 網路模組:伺服器

協議: //新增玩家        public void AddPlayer(string id)        {   

影象分類網路模組化,深度化,輕量化

Residual Network在深度網路變得越來越深的情況下,研究員發現的第一個問題就是退化現象,網路越深,對計算資源的要求就越高,並且當深度達到一定程度後,增加網路層數不但沒有準確性上的提升,反而出現了退化。解決或降低退化現象的第一款神器就是ResNet。ResNet引入了殘差網路結構(Residual

webpack學習(七):啟用 HMR(模組替換)

demo地址: https://github.com/Lkkkkkkg/webpack-demo 上次使用 webpack-dev-serve : https://blog.csdn.net/qq593249106/article/details/84922572 當前目錄結構 :

Qt網路通訊實戰(TCP)

伺服器UI截圖:        #ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include <QTcpServe

吳恩達深度學習筆記(25)-如何搭建神經網路模組?如何運算?

搭建神經網路塊(Building blocks of deep neural networks) 你已經看到過正向反向傳播的基礎組成部分了,它們也是深度神經網路的重要組成部分,現在我們來用它們建一個深度神經網路。 這是一個層數較少的神經網路,我們選擇其中一層(方框部分),從這一層的計算

Unity3d學習記錄之UNet網路模組

學習來源: 聯機遊戲可增加遊戲的可玩性和競技性,所以一款好的聯機遊戲將會帶來很多樂趣。 Unity自帶一個簡單的網路模組UNet,可將單人遊戲改成多人聯機遊戲。 將單人遊戲轉換為Unity多人遊戲的步驟: ①:給遊戲增加網路管理NetworkManager

Qt網路程式設計概述(一)

Qt網路程式設計概述 QtNetWork模組提供了若干類支援TCP/IP客戶端伺服器端的開發。有如下兩類: 低階網路操作:QTcpSocket/QTcpServer/QUdpSocket 高階網路操作:QNetworkRequest/QNetworkReply

Qt網路程式設計之QNetworkRequest和QNetworkReply例項(四)

設想有如下場景:輸入若干的url,然後依次的下載並存儲到檔案。本案例使用QNetworkRequest和QNetworkReply。原始碼如下: 案例原始碼 標頭檔案 #pragma once //////////////////////////////////

Python socket網路模組

一、基於TCP協議的socket通訊 以打電話為理解方式進行TCP的通訊。Server端程式碼: import socket phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #購買電話卡,AF_INET伺服器之間網路通訊,so

QT網路程式設計部分---Qt登陸請求PHP指令碼實現登陸

今天看了一下Qt網路程式設計這一塊的知識,寫了一個登陸介面,通過網路請求PHP指令碼,來實現登陸驗證。 大體思路是這樣的:點選登陸按鈕時,將賬號和密碼傳送到PHP指令碼進行判斷,然後接收返回來的值,進行判斷。 1.新建QtGui應用,專案名稱為postceshi,基類使用預設的Q

Qt for Python 5.12 釋出 ,沒有 LTS 支援的版本

   Qt for Python 5.12釋出,你可以通過以下方式安裝該版本: pip install PySide2 此外,您可以從 Qt 的官方下載伺服器下載軟體,或者從我們的Git儲存庫獲取原始碼。 請注意,Qt for Python與特定的 Qt 版本緊密繫結,但不會繼

學習筆記:QT網路程式設計:C2S基於TCP的檔案傳輸

預處理: 1在.pro加入一條語句 QT += network 記得儲存檔案 2.標頭檔案中可包含標頭檔案/儘量用前向宣告(因為只宣告不用) TCP檔案傳輸

Looking for Qt Champions 2018

Who do you think should be a Qt Champion? Nominate the champions you know right now! It is that t

Spark 底層網路模組

對於分散式系統來說,網路是最基本的一環,其設計的好壞直接影響到整個分散式系統的穩定性及可用性。為此,Spark專門獨立出基礎網路模組spark-network,為上層RPC、Shuffle資料傳輸、RDD Block同步以及資原始檔傳輸等提供可靠的網路服務。在spark-1.

【Unity3D_常用模組】 Socket網路模組(超級詳細完整,上線專案中穩定使用著)

Socket網路連線模組 主要分為四部分: 一、套接字管理器(SocketManager.cs) 1)、連線 2)、斷開 3)、接收(執行緒) 4)、傳送(攜程) 1.傳送訊息基本方法 2.二進位制方式傳送          3.protobuf方式傳送  

cocos2d-x 跨平臺Socket網路模組

相信很多人都找,但網上給出的答案又覺得看不懂。其實就是使用bsd socket.但這個只能在linux下面使用,而在window是無法使用的。所以我們要封裝一下。 #ifndef __CSocket__ #define __CSocket__ #if CC_TARGE

QT Creater中Qt Multimedia模組的使用

Qt 5中Qt Multimedia模組代替Qt 4 Phone模組的使用音訊檔案播放:main.cpp:#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[