五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

基于 Qt 的 TCP 網(wǎng)絡(luò)通信

2023-05-30 17:19 作者:鋼廠小霸王_X  | 我要投稿

TCP通信特點:

TCP 是一個面向連接的,安全的,流式傳輸協(xié)議,這個協(xié)議是一個傳輸層協(xié)議。

  • 面向連接:是一個雙向連接,通過三次握手完成,斷開連接需要通過四次揮手完成。

  • 安全:tcp 通信過程中,會對發(fā)送的每一數(shù)據(jù)包都會進行校驗,如果發(fā)現(xiàn)數(shù)據(jù)丟失,會自動重傳

  • ?流式傳輸:發(fā)送端和接收端處理數(shù)據(jù)的速度,數(shù)據(jù)的量都可以不一致。

UDP 是一個面向無連接的,不安全的,報式傳輸協(xié)議,同樣也是一個傳輸層協(xié)議。



大致流程為:TCP服務器端建立套接字,然后進行綁定和監(jiān)聽,接著等待客戶端的連接請求。如果連接成功會得到一個用于通信的文件描述符,用這個描述符進行讀寫操作,通信完成斷開連接。對于TCP客戶端的話就相對簡單一些,只需要創(chuàng)建通信套接字,然后通過服務器的IP和端口進行連接,連接成功進行通信操作,最后斷開連接。

下面是基于QT的TCP通信

Qt 提供了兩個類來進行TCP 的套接字通信:

QTcpServer:服務器類,用于監(jiān)聽客戶端連接以及和客戶端建立連接。

QTcpSocket:通信的套接字類,客戶端、服務器端都需要使用。

這兩個套接字通信類都屬于網(wǎng)絡(luò)模塊 network。

常用 API 函數(shù):

1.????? QTcpServer

構(gòu)造函數(shù)

給套接字設(shè)置監(jiān)聽

每次有新連接可用時都會發(fā)出 newConnection () 信號

在通過QTcpSocket *QTcpServer::nextPendingConnection()來獲取用于通信的文件描述符

2.????? QTcpSocket

QTcpSocket 是一個套接字通信類,不管是客戶端還是服務器端都需要使用。在 Qt 中發(fā)送和接收數(shù)據(jù)也屬于 IO 操作(網(wǎng)絡(luò) IO)。

構(gòu)造函數(shù)

連接服務器,需要指定服務器端綁定的IP和端口信息(兩種都可以)

在 Qt 中不管調(diào)用讀操作函數(shù)接收數(shù)據(jù),還是調(diào)用寫函數(shù)發(fā)送數(shù)據(jù),操作的對象都是本地的由 Qt 框架維護的一塊內(nèi)存。因此,調(diào)用了發(fā)送函數(shù)數(shù)據(jù)不一定會馬上被發(fā)送到網(wǎng)絡(luò)中,調(diào)用了接收函數(shù)也不是直接從網(wǎng)絡(luò)中接收數(shù)據(jù),關(guān)于底層的相關(guān)操作是不需要使用者來維護的。

接收數(shù)據(jù)

// 將當前可用操作數(shù)據(jù)全部讀出,通過返回值返回讀出的字符串

發(fā)送數(shù)據(jù)

// 發(fā)送參數(shù)指定的字符串

在使用 QTcpSocket 進行套接字通信的過程中,如果該類對象發(fā)射出 readyRead() 信號,說明對端發(fā)送的數(shù)據(jù)達到了,之后就可以調(diào)用 read 函數(shù)接收數(shù)據(jù)了。

調(diào)用 connectToHost() 函數(shù)并成功建立連接之后發(fā)出 connected() 信號

在套接字斷開連接時發(fā)出 disconnected() 信號

QT具體通信流程

服務器端:

  1. 創(chuàng)建套接字服務器 QTcpServer 對象

  2. 通過 QTcpServer 對象設(shè)置監(jiān)聽,即:QTcpServer::listen()

  3. 基于 QTcpServer::newConnection() 信號檢測是否有新的客戶端連接

  4. 如果有新的客戶端連接調(diào)用 QTcpSocket *QTcpServer::nextPendingConnection() 得到通信的套接字對象

  5. 使用通信的套接字對象 QTcpSocket 和客戶端進行通信

頭文件:

.cpp文件

客戶端

  1. 創(chuàng)建通信的套接字類 QTcpSocket 對象

  2. 使用服務器端綁定的 IP 和端口連接服務器 QAbstractSocket::connectToHost()

  3. 使用 QTcpSocket 對象和服務器進行通信

頭文件:

.cpp文件


基于 Qt 的 TCP 網(wǎng)絡(luò)通信的評論 (共 條)

分享到微博請遵守國家法律
洪洞县| 苏尼特右旗| 龙陵县| 文安县| 准格尔旗| 贡嘎县| 苏尼特右旗| 保山市| 土默特左旗| 苍山县| 蒙阴县| 涿鹿县| 凭祥市| 湟中县| 山东| 库车县| 西畴县| 肇源县| 合江县| 体育| 土默特右旗| 那坡县| 黄浦区| 巴林左旗| 顺昌县| 泸定县| 曲松县| 建瓯市| 山丹县| 新邵县| 都安| 织金县| 孝感市| 佳木斯市| 惠安县| 宝丰县| 延寿县| 普定县| 都安| 新龙县| 嘉荫县|