qt版本:qt5.11
其他qt5版本均支援。
1、tcp伺服器建立
首先建立tcpserver工程,涉及到 tcpserver、 tcpclientsocket、server三個檔案和main主檔案,
在tcpserver.pro中新增如下語句:
qt +=network
1)a、標頭檔案「tcpserver.h」中宣告了需要的各種控制項,tcpserver繼承自qdialog,實現了服務端的對話方塊顯示和控制。
其中具體**如下:
#include#include#include#include#include#include#include"server.h"
class tcpserver:public qdialog
;
b、在原始檔「tcpserver.cpp」中,tcpserver類的建構函式實現窗體個控制項的建立、布局等,具體如下:
#include "tcpserver.h"
tcpserver::tcpserver(qwidget *parent,qt::windowflags f):qdialog(parent,f)
void tcpserver::slotcreateserver()
void tcpserver::updateserver(qstring msg, int length)
介面建立圖如下:
2)a、標頭檔案「tcpclientsocket.h」的建立,tcpclientsocket繼承自qtcpsocket,建立乙個tcp套接字,以便在伺服器端實現與客戶端程式的通訊。
具體**如下:
#include#includeclass tcpclientsocket:public qtcpsocket
;
b、在原始檔「tcpclientsocket.cpp」中,建構函式tcpclientsocket的內容如下:
#include "tcpclientsocket.h"
tcpclientsocket::tcpclientsocket(qobject *parent)
//當有資料到來時,出發datareceived()函式,從套接字中將有效的資料讀出,然後發出updateclients()訊號,
void tcpclientsocket::datareceived()
}//進行關閉訊號
void tcpclientsocket::slotdisconnected()
3)a、標頭檔案「server.h」,server繼承自qtcpserver,實現乙個tcp協議的伺服器。利用qtcpserver,開發者可以監聽到指定埠的tcp連線。具體**如下:
#include#include#include"tcpclientsocket.h" // 包含tcp套接字
class server:public qtcpserver
;
b、原始檔「server.cpp」,其中具體內容見**中標註(很詳細),**如下:
#include "server.h"
server::server(qobject *parent,int port):qtcpserver(parent)
//當出現乙個新的連線時,qtcpserver出發incomingconnection()函式
void server::incomingconnection(int socketdescriptor)
void server::updateclients(qstring msg, int length)
}}void server::slotdisconnected(int descriptor)
}return ;
}
4)主函式「main.cpp」如下:
比較簡單,不做介紹了。
int main(int argc, char *argv)
2、tcp客戶端建立
首先建立tcpclient工程,涉及到tcpclient和main主檔案,
在tcpclient.pro中加入如下**:
qt+= network
1)a、標頭檔案「tcpclient.h」,其中tcpclient類繼承自qdialog類,宣告了需要的各種控制項,
具體**如下:
#include#include#include#include#include#include#include#includeclass tcpclient:public qdialog
;
b、原始檔「tcpclient.cpp」具體**如下:
#include "tcpclient.h"
#include#includetcpclient::tcpclient(qwidget *parent,qt::windowflags f):qdialog(parent,f)
void tcpclient::slotenter()
username=usernamelineedit->text();
/*建立了乙個qtcpsocket類物件,並將訊號/槽連線起來 */
tcpsocket = new qtcpsocket(this);
connect(tcpsocket,signal(connected()),this,slot(slotconnected()));
connect(tcpsocket,signal(disconnected()),this,slot(slotdisconnected()));
connect(tcpsocket,signal(readyread()),this,slot(datareceived()));
//與tcp伺服器端連線,連線成功後,發出connected()訊號
tcpsocket->connecttohost(*serverip,port);
status=true;
}else
//與伺服器斷開連線,斷開連線後發出disconnected()訊號
tcpsocket->disconnectfromhost();
status=false; //將status狀態復位
}}void tcpclient::slotconnected()
}void tcpclient::slotsend()
qstring msg=username+":"+sendlineedit->text();
tcpsocket->write(msg.tolatin1(),msg.length());
sendlineedit->clear();
}void tcpclient::slotdisconnected()
//當有資料到來時,觸發datareceived()函式,從套接字中將有效資料取出並顯示。
void tcpclient::datareceived()
}
介面如下:
2)主函式「main.cpp」如下:
int main(int argc, char *argv)
3、工作介面如下:
其中,預設的伺服器是 127.0.0.1,可以建立多個客戶端視窗,進行互動。
Qt 5 使用http協議通訊
network access api的一部分,並且這個類包含著在網路上傳送請求的必要資訊。qnetworkaccessmanage返回的乙個物件,請求完成之後,需要刪除該物件 需要乙個mamager物件,做get post qnetworkaccessmanager manager newqnetw...
qt5實現串列埠通訊
源 mainwindow.h ifndef mainwindow h define mainwindow h include include include include mythread.h namespace uiclass mainwindow public qmainwindow endi...
QT5 窗體間通訊
a.h 定義訊號 pragma once include 只有繼承了public qobject類的類,才具有訊號槽的能力。傳送者和接收者都需要是qobject的子類 凡是qobject類 不管是直接子類還是間接子類 都應該在第一行 寫上q object classa public qobject ...