先說一下自己對qt的tcp通訊的簡單理解
客戶端client
需要乙個qtcpsocket
物件
常用函式有:
void connecttohost(const qhostaddress &address, quint16 port, openmode openmode = readwrite)
void disconnectfromhost()
qhostaddress peeraddress() const
qstring peername() const
qint16 peerport() const
qint64 write(const char *data)
qint64 read(char *data, qint64 maxsize)
常用訊號:
void readyread()
void connected()
void disconnected()
qtcpsocket
就是乙個可以和對方互動的乙個物件
服務端server
需要乙個qtcpsocket
物件和乙個qtcpserver
物件
qtcpsocket
用法跟上面一樣
qtcpserver
常用函式:
bool listen(const qhostaddress &address = qhostaddress::any, quint16 port = 0)
qtcpsocket * nextpendingconnection()
常用訊號:
void newconnection()
qtcpserver
的作用就是宣告服務端,用於接收qtcpsocket
的連線訊號
tcp大致通訊流程:
server監聽目標位址並設定埠
若有client在目標位址內並傳送連線訊號給server,則server與client連線成功,兩者通過socket來通訊
兩者之間的socket是對等關係,通過write傳送訊息,通過read接收訊息
兩者其中之一主動斷開連線,server繼續監聽
使用網路程式設計需要在pro檔案中加入 qt += network
學到的新東西:
qstring轉char*:str.toutf8().data()
獲取textedit內容:ui->textedit->toplaintext()
客戶端主要**:
#include
"clientwidget.h"
#include
"ui_clientwidget.h"
#include
clientwidget::
clientwidget
(qwidget *parent)
:qwidget
(parent),ui
(new ui::clientwidget));
connect
(tcpsocket,
&qtcpsocket::readyread,
//接收到訊息訊號[=
]())
;}clientwidget::
~clientwidget()
void clientwidget::
on_pushbuttonconnect_clicked()
void clientwidget::
on_pushbuttonsend_clicked()
void clientwidget::
on_pushbuttondisconnect_clicked()
服務端主要**:
#include
"serverwidget.h"
#include
"ui_serverwidget.h"
serverwidget::
serverwidget
(qwidget *parent)
:qwidget
(parent),ui
(new ui::serverwidget));
});}
serverwidget::
~serverwidget()
void serverwidget::
on_pushbuttonsend_clicked()
void serverwidget::
on_pushbuttondisconnect_clicked()
在main.cpp中建立客戶端/服務端的視窗物件 w2
用w2.show()同時執行2個視窗
效果圖:
Qt之多執行緒簡單學習
qt中建立執行緒的方法 只需要子類化qthread並重新實現它的run 函式就可以了。run 是個純虛函式,是執行緒執行的入口,在run 裡出現的 將會在另外執行緒中被執行。run 函式是通過start 函式來實現呼叫的。下面是我學習時的例子 工程檔案 介面效果 執行效果 stopped被宣告為易失...
Qt學習之旅 1 簡單控制項
學習筆記,小白可以相互學習,大佬看到能告訴咱理解不對的地方就好了。qtcreator 整合開發環境 qmake makefile生成器,能根據工程檔案產生不同平台下的makefile lab settext 設定文體 setpixmap qpixmap 444.jpg 顯示 qlabel lab n...
Qt學習筆記 QTreeWidget的簡單使用
treewidget setcolumncount int columns 設定樹狀列表的列數,也就是頂部分類的個數 setheaderlabel const qstring headername 設定樹狀列表的首個頭部文字資訊 setheaderlabel const qstringlist he...