手機QQ是通過數據網路或者WIFI連接到伺服器,然後進行處理,再到其他用戶,通信協議以udp為主,TCP協議為輔。
2. QQ是怎樣實現消息傳遞的
1. QQ之間的消息是通過TCP協議和UDP協議進行傳遞的。
2. 但這TCP協議和UDP協議不僅僅是我們通用的協議,騰迅還在這些協議上加了一些自己的東西,也就是雙方必須遵守相同的協議才能通訊,即我們必須用騰迅給我們的客戶端才能連上騰迅的伺服器進行聊天。
3.因為UDP協議是不可靠傳輸,因此採用UDP協議的信息在傳送過程中很容易丟失,所以QQ使用輔助演算法實現包重傳機制以保證信息不會丟失。當消息在客戶間直接傳送無法到達時就才使用TCP協議通過伺服器中轉。
3. 兩個人聊QQ發消息的實現過程(利用計算機網路的原理解釋)
QQ的通信協議是一套基於二進制數據的自己開發的應用層網路協議。其中使用一些公司的加密演算法。QQ基本通信協議支持udp和tcp兩種基本協議方式。兩種方式的基本數據結構是一樣的。只是tcp包多了一個描述長度頭部。 QQ的通信原理 QQ 聊天程序採用的是C/S通信模式,即客戶服務模式,它把一個應用分成功能不,分別在不同的計算機上運行,其中一個為服務端程序,用來響應和提供固定的服務,一個為客戶端程序,用來向服務端提出請求和要求某種服務。在數量關繫上,通常有一對一的(即一個服務端程序和一個客戶端程序之間通信),也有一對多的(即一個服務端程序和多個客戶端程序之間通信),也有多對多的(即多個服務端程序和多個客戶端程序之間通信)。所謂服務端程序、客戶端程序也是相對的概念,有時在一個程序中既有服務端又有客戶端的功能。QQ 聊天程序分成了兩個程序,一個安裝在騰訊公司的伺服器上,我們稱之為服務端程序,一個安裝在QQ ,我們稱之為客戶端程序。在許多介紹網路通信編程的書籍中有關網路聊天的例子,當一個客戶要與另一個客戶聊天時,第一個客戶先把聊天數據發送給伺服器,,伺服器好像一個中轉站,這在客戶數量比較少時,伺服器還能承受,在客戶數量比較多時,伺服器肯定要癱瘓。何況客戶之間還要傳送文件、語音聊天、視頻聊天等等,為了減少伺服器的壓力,各客戶端之間需要直接通信。 1。在服務端和客戶端之間(一對多) 用於客戶端程序登錄,驗證用戶密碼,獲取其它在線好友信息等等。 2。在客戶端和客戶端之間(多對多) 用於在線好友間直接通信聊天。此時每個客戶端程序上既有實現服務端功能的部分,又有實現客戶端功能的部分,前者用於接收聊天數據,後者用於發送聊天數據。 在用C/S 模式進行通信時,作為客戶端在請求與服務端連接時需要知道服務端的IP 地址,騰訊公司的伺服器具有固定的公網地址,這沒有問題。但是在客戶端和客戶端之間通信時,每個用戶的IP 地址都是ISP 所給的臨時地址,無法固定,那麼某個用戶要與另一個用戶連接時,怎麼知道對方的IP 地址呢?當一個用戶連接到Internet 後,獲得了一個臨時的公網地址,當登錄到QQ 時,QQ 服務端會獲得該上線用戶的IP 地址,然後告知其他要與該上線用戶聊天的用戶,其他用戶就可以連接該用戶與之直接通信了。 在Win32 平台上,對於眾多的基層網路協議,Winsock是訪問它們的首選介面。如果想從頭開發一個網路通信應用程序,TCP/IP 就是首選協議之一。為了保證可靠的數據傳輸,宜選擇TCP 。在開發工具方面,VC 是我的首選,但VB 可能擁有更多的使用者,所以我用VB6。0,以便更多的讀者能夠理解。喜歡VC 的的讀者要將其轉化成VC 下的代碼也很容易。在VB 中有一個Winsock 控制項,它為VB 網路編程提供了一條便捷的途徑。
希望可以幫到你 望採納 謝謝