概述:
在qt中tcp通訊過程和linux系統程式設計中有點類似:
linux下的tcp通訊
在qt中的tcp通訊:
過程詳解:
1,服務端:
第一步建立監聽套接字
第二步監聽
監聽的時候客戶端會傳送連線請求如果連線成功則回觸發訊號newconnection
我們使用訊號槽機制捕捉到這個訊號說明此時客戶端以及連線到服務端(監聽套接字)了,所以我們會在槽函式裡面取出通訊套接字進行通訊。
第三步:通訊(讀寫資料)
讀資料的時候根據訊號readyread
來讀取。對於寫資料可以使用乙個button按鈕來控制。
第四步:斷開和此客戶端連線。注意是關閉通訊套接字而不是監聽套接字。
2,客戶端:
第一步:建立乙個通訊套接字
第二步:呼叫函式connecttohost
來連線服務端
第三步:連線成功後進行通訊即可:
舉例實現
實現兩個視窗進行資料互動,使用tcp
建立視窗如下:
建立視窗的時候使用ui即可,對於只需要顯示的文字編輯區可以設定成為唯讀模式。
伺服器**:
按照上述步驟進行連線通訊:
/*建立監聽套接字*/
tcpserver =
newqtcpserver
(this);
/*監聽*/
tcpserver-
>
listen
(qhostaddress::any,
8888);
/*獲取通訊套接字*/
connect
(tcpserver,
&qtcpserver::newconnection,[=
]())
;});
tcpsocket::
~tcpsocket()
void tcpsocket::
on_pushbutton_send_clicked()
}void tcpsocket::
on_pushbutton_close_clicked()
}
對於資料通訊和使用簡單的檔案驅動時候差別不是很大,在獲取文字編輯區內容的時候使用toplaintext()
,對於write函式我們傳參的時候轉成char*再進行傳送資料,需要注意在讀資料的時候我們必須把連線readyread訊號放在獲取到通訊套接字之後,不然會報錯,是因為對於通訊套接字沒有分配空間。
對於客戶端**:
tcpsocket =
newqtcpsocket
(this);
/*連線成功訊號*/
connect
(tcpsocket,
&qtcpsocket::connected,[=
]())
;connect
(tcpsocket,
&qtcpsocket::readyread,[=
]())
;client::
~client()
void client::
on_pushbutton_connect_clicked()
}void client::
on_pushbutton_send_clicked()
}void client::
on_pushbutton_close_clicked()
}
QT中的 TCP 通訊 (一)
客戶端 widget.h ifndef widget h define widget h include include 4.5版本的 qt標頭檔案 arm 開發板使用的 qt版本 include include include include include include include inc...
QT5中實現TCP協議簡單通訊
qt版本 qt5.11 其他qt5版本均支援。1 tcp伺服器建立 首先建立tcpserver工程,涉及到 tcpserver tcpclientsocket server三個檔案和main主檔案,在tcpserver.pro中新增如下語句 qt network1 a 標頭檔案 tcpserver....
2019 3 10 Qt學習 簡單TCP通訊
先說一下自己對qt的tcp通訊的簡單理解 客戶端client 需要乙個qtcpsocket物件 常用函式有 void connecttohost const qhostaddress address,quint16 port,openmode openmode readwrite void disc...