之前的伺服器與客戶端的通訊過程中,雙方都是直接傳送資訊內容,並預設以回車符結尾,這樣的通訊方式(也可以算作一種協議)所包含的資訊過於簡單與貧乏。沒有包含資訊的型別(登入、驗證、私聊等)的資訊,也不能包含發信人,收信人的資訊,這只能在簡單群聊伺服器中使用。如果在比如qq
等這些較為複雜的聊天環境下就顯得資訊難以處理。
所以我們要通過制定一定的協議來擴充通訊中資訊所包含的資訊量的大小。這裡使用的是xml
協議來定義通訊資訊的格式。xml
格式有點類似於html
,但與html
的區別在於xml
的標記元是可以自定義的,而html
的標記元則受限於解析工具的設定範圍。這也取決於兩種格式的主要作用。xml
側重於體現資訊所體現的意義即資訊的本身,而html
則重於表示資訊的格式即資訊的表現方式。
基於流程可以先把訊息形式粗略分為9
種:登入訊息,登入應答訊息,註冊訊息,註冊應答訊息,上線、下線訊息,聊天訊息,使用者列表訊息,還有由伺服器自己傳送給客戶機的訊息。
自定義的協議如下 1
、登入訊息:客戶機登入時傳送使用者名稱密碼給伺服器
login
name
pwd
2、登入應答訊息:伺服器返回客戶的登入請求是否成功
loginrsp
登入結果
3、註冊訊息:客戶機傳送註冊請求給伺服器
regname
pwd
4、註冊應答訊息:
伺服器返回客戶的註冊請求是否成功
regrsp
註冊結果
5、聊天訊息:
chat
sendername
recievername
msg
6、上線訊息:
online
name
7、下線資訊:
offline
name
8、使用者列表資訊:
budylist
all,user1,user2,... 9
、伺服器給客戶機訊息:
servermsg
name
msg協議制定好之後就是對協議的解析。xml
的很簡單,xml
中標記元的作用就是確定資訊的位置及其資訊型別,並對其進行相應的處理。由於所有可能出現的標記元都是已知的(如果完全按照自己制定的協議的話),那麼只要使用string.indexof()
和string.substring()
等方法來查詢和擷取資訊即可。
小型專案總結之三
這個小型專案有點曲折,始於2006年,當時由於沒有總結經驗,所以後來又做了n個類似的專案,鑑於此,記下總結。系統所用硬體規格建議 項 目品 名 規 格 數 量7 1.ibm x 345 server 4 xeon 3.06cpu及以上1 cache 每顆cpu 512kb及以上 2g pc 133m...
XMPP通訊過程 簡單例項
xmpppy庫是採用python編寫的xmpp協議的實現,它是jabberpy專案的替代方案,後者已停止維護。採用該庫並結合python程式語言的特性,可以快速的實現基於xmpp協議的應用,如即時聊天系統。之後在介紹xmpp協議過程中,都將採用該庫編寫例項,因此這裡不做詳細介紹,之後會詳細的介紹xm...
xmpp即時通訊詳解
摘要 此文件定義了可擴充套件訊息出席協議 xmpp 的核心特性 協議使用xml元素在任意兩個網路端點間近實時的交換結構化資訊。當xmpp為交換xml資料提供一般化,可擴充套件的框架時,它主要用於建立滿足rfc2779的即時訊息與出席應用的需求。1 介紹 1.1 概要 xmpp是乙個開放的可擴充套件標...