天天看點

QT TCP UDP網絡通信<理論篇>

大概會花三到四篇部落格去講關于QT裡面網絡通信的内容,其實不能說是QT的網絡通信,不管什麼語言,其實都是差不多,本質在于實作的方法不同,通信的機制都是一樣的

第一篇:關于網絡通信的基礎知識

網絡通信概述:網絡程式設計是萬物互聯的基礎,目前用到的TCP/IP協定,它本身是分為四層:應用層、傳輸層、網際層、網絡接口層。但是作為普通程式員,我們寫程式的時候也隻是用到了傳輸層和應用層。現在常見的網絡通信協定主要包括:TCP UDP FTP HTTP,無論是在window還是Linux,系統都提供了統一的套接字,也就是常說的socket,在QT中,QT已經封裝了網絡子產品QtNetwor,這個內建度非常高,基本可滿足基本的需要。

傳輸控制協定(transmission control protocol ,TCP)是一種可靠、面向連接配接、面對資料流的傳輸協定,HTTP、FTP都有TCP的影子,TCP協定适合連續的資料傳輸,也是對資料安全性有保證的傳輸。

TCP工作原理:TCP協定能夠提供可靠的通信連接配接,使得我的計算機發出的位元組流能夠毫無差錯的送到到網絡上指定的其它計算機,它的可靠性主要是因為它的請求----應答這一套安全的機制,這并不是簡單的一次請求和應答,而是複雜的連接配接過程,如下圖:

QT TCP UDP網絡通信<理論篇>

關于三次握手和四次揮手更是重點,這裡面主要是大概介紹通信的機制,關于tcp連接配接的三次握手和四次揮手下次再補充到其它的部落格。

首先啟動伺服器,一段時間後啟動用戶端,它與此伺服器經過三次握手後建立連接配接。此後的一段時間内,用戶端向伺服器發送一個請求,伺服器處理這個請求,并為用戶端發回一個響應。這個過程一直持續下去,直到用戶端為伺服器發一個檔案結束符,并關閉用戶端連接配接,接着伺服器也關閉伺服器端的連接配接,結束運作或等待一個新的用戶端連接配接。

由于複雜的通信過程,是以在通信速度上肯定是要慢于UDP通信的。

UDP:

使用者資料報協定(User Data Protocol, UDP)是一一種簡單輕量級、不可靠、面向資料報、

無連接配接的傳輸層協定,可以應用在可靠性不是十分重要的場合,如短消息、廣播資訊等。

适合應用的情況有以下幾種:

●網絡資料大多為短消息;

●擁有大量用戶端;

●對資料安全性無特殊要求;

●網絡負擔非常重,但對響應速度要求高。

這個就很明顯了,舉個例子:QQ和微信完全符合上面的應用場合。

工作原理:UDP用戶端向UDP伺服器發送一定長度的請求封包,封包大小的限制與各系統的協定實作有關,但不得超過其下層IP協定規定的64KB; UDP伺服器同樣以封包形式作出響應。如果伺服器未收到此請求,用戶端不會進行重發,是以封包的傳輸是不可靠的。

通信流程:

QT TCP UDP網絡通信<理論篇>

用戶端不用與伺服器建立連接配接,隻負責向伺服器發送封包資料,當然伺服器也不用去管理用戶端是否連接配接,隻需要去監聽用戶端即可。