qt提供了幾種在qt應用程式中實現程序間通訊(ipc)的方式。
1. tcp/ip
跨平台的qtnetwork模組提供了可以簡單實現網路程式設計的類。它提供了特定的應用層協議通訊的高階別的類(像qnetworkaccessmanager,qftp)和低等級的類(像qtcpsocket,qtcpserver,qsslsocket)。
qt4.4以後增加了qlocalserver和qlocalsocket兩個本地套接字類,可以用於程序間通訊。這兩個類是事件迴圈驅動的,同時也提供waitfor***.....等一系列阻塞的方法。
server端程式
標頭檔案
#ifndef localserver_h
#define localserver_h
#include #include #include class localserver : public qobject
;#endif // localserver_h
server端cpp檔案
#include #include #include #include #include "localserver.h"
#define server_name "interprocesscom"
#define ipc_recv_buf_len (1024)
localserver::localserver(qobject *parent) : qobject(parent)
connect(server, signal(newconnection()), this, slot(processnewconnection()));
}localserver::~localserver()
}void localserver::processnewconnection()
void localserver::disconnect()
}qdebug() << "after disconnect localsocketlist size:" << localsocketlist.size();
}void localserver::readdata()
客戶端程式
標頭檔案
#ifndef localclient_h
#define localclient_h
#include #include class localclient : public qobject
;#endif // localclient_h
cpp檔案
#include #include #include "localclient.h"
#define server_name "interprocesscom"
#define ipc_recv_buf_len (1024)
localclient::localclient(qobject *parent) : qobject(parent)
localclient::~localclient()
}void localclient::readdata()
void localclient::displayerror(qlocalsocket::localsocketerror socketerror)
}
2.shared memory
qt提供了跨平台的qsharedmemory類,qsharedmemory提供了一系列作業系統共享記憶體的方法。此外,qsystemsemaphore可用於控制對系統共享資源的訪問,以及在程序之間進行通訊。
3.dbus
qdbus模組只能用在unix環境,它把qt的訊號和槽機制擴充套件到了程序間通訊,可以把乙個程序的訊號連線到另乙個程序的槽。
4.qt communications protocol (qcop)
qcopchannel 類實現了一種通過命名管道在程序間傳遞訊息的協議。qcopchannel只能用在嵌入式linux。像qdbus模組一樣,qcopchannel也把訊號和槽機制擴充套件到了程序間通訊,不過和qdbus模組不同的是,qcop不依賴第三方的庫。
qt 程序間通訊
qt中仍可以利用傳統的程序間通訊方式 共享記憶體.在桌面環境中,在傳統的程序間通訊方式的基礎上發展了更為方便的物件導向的通訊方式 kde環境 dcop gnome環境 bonobo dbus freedesktop開源專案的linux ipc通訊機制,kde和gnome環境都能支援 qt embed...
qt 程序間通訊
qt中仍可以利用傳統的程序間通訊方式 共享記憶體.在桌面環境中,在傳統的程序間通訊方式的基礎上發展了更為方便的物件導向的通訊方式 kde環境 dcop gnome環境 bonobo dbus freedesktop開源專案的linux ipc通訊機制,kde和gnome環境都能支援 qt embed...
Qt程序間通訊
程序間通訊,就是在不同程序之間傳播或交換資訊。管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。有名管道 named pipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。訊號量 semophor...