聊天工具的架構分析

2021-06-21 11:31:45 字數 1463 閱讀 8255

隨著統一通訊的發展,聊天工具有了更好的發展,其中要算手機和網上的即時聊天工具的發展了。手機主要是3g的開發,有了統一通訊技術的支援,我們才可以實現第三代的通訊,但是這裡要說的另乙個方面,關於聊天工具的。

下面就 聊天工具開發聊聊現有聊天工具的架構,需要先說明的是tcp和udp這兩個協議,因為只有先確定了這兩個最重要的協議,才可以確定乙個即時聊天軟體的架構。首先舉兩個例子,即時聊天軟體msn使用的就是tcp,然而qq使用的是udp協議。其實這兩者的最大區別就是tcp的可靠保證,是它的三次握手機制,這一機制保證校驗了資料,保證了他的可靠性。而udp就沒有了,所以不可靠。比如說,在msn上,要傳輸檔案,首先是傳送檔案,對方確定接受,然後再傳送,這樣,三次握手。但是udp不同,它是直接傳送,不管對方是否同意,還是會傳送,所以很不安全,但是這是由於這樣,也保證了傳輸的速度,不會受到安全性的限制。而tcp一般會保證傳送和收到,更適合一些對安全性質需要較高的工具軟體。但是為什麼同樣是即時聊天性質的軟體,msn使用的是tcp,而qq的則是udp呢?通過思考,我認為,國外的網路環境相對國內的好很多,安全性也***,而國內的網路環境不如國外,還有很多**伺服器,再加上網通和電信,造成了很多不便,如果使用的是tcp的話,那麼我們很多使用者將無法使用這個軟體,或者是在傳輸檔案和資料的時候將會遇到很多的困難,甚至無法傳送檔案,所以qq使用了udp。其實呢,大多聊天軟體例如qq,不光是使用了udp,在某些方面也用到了tcp,就像qq的文字聊天協議。

統一通訊中即時

聊天軟體的架構,由三部分組成,dispatchserver(ds) notification server (ns)和switchboard server (sb)。

ds採用的負載均衡方式應該比較簡單,通過dns解析來做負載均衡。並且由於在ds上的連線都是短連線,保持時間非常短,所以應該ds伺服器的數量應該不會很多。由於ds必須要返回乙個可用的ns ip,那麼內部應該還有其他種類的伺服器來儲存當前所有可用的ns伺服器,以及這些ns伺服器上的負載。通過ds這一層來為接下來的ns做負載均衡。ns連線均為長連線,所以在這一層上的負載由ds來調節。如果ns負載太大,新客戶連線上ds時會返回其他相對空閒的ns伺服器。當然ns伺服器之間也有相互通訊的機制也是少不了的,比如上下線通知、對話發起等等。sb連線的時間介於ns和ds之間,其負載由ns來作控制。對話完成後和sb之間的連線就關閉了。不過由於所有的對話都在sb上進行,ms的伺服器資源再強也會吃緊,所以現在新版的msn messenger都加入了p2p message型別,在發起對話的時候會判斷如果雙方都支援sustain ,則會直接點對點連線連線,繞過sb這一層。

在及時軟體的互動過程中,首先客戶端向伺服器傳送乙個請求登入令牌的資料報,伺服器返回登入令牌。這個令牌是在伺服器端生成的,和客戶端的ip位址,版本資訊等資料相關。在客戶端得到登入令牌後,就會向伺服器傳送乙個包含登入資訊的登入請求,伺服器首先會檢視客戶端的號碼、ip位址和版本是否可以在本伺服器上進行登入,如果可以就驗證客戶端的登入資訊是否與伺服器上儲存的登入資訊一致,如果一致就向客戶端返回乙個連線成功的資料報,不匹配則返回登入失敗。這就是整個的登入的實現過程。

即時聊天工具

聊天室客戶端 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system...

Python聊天工具

import socket import sys import time import getopt from threading import thread class webchat 輸出幫助資訊 def usage self print help info python webchat.py ...

web開啟聊天工具

href skype chat 開始 skype 文字聊天a href skype userinfo 檢視 skype 資料a href skype add 新增到 skype 聯絡人列表a href skype call 開始 skype 語音呼叫a href skype voicemail 使用...