最近開始準(zhǔn)備用Java開發(fā)QQ,由于在大四的時(shí)候曾經(jīng)開發(fā)過一簡(jiǎn)單的QQ聊天機(jī),現(xiàn)在想把它完善,使之盡量能夠用于實(shí)際應(yīng)用中。
             在開發(fā)之前,自己想(推理)了一下QQ的工作原理和一些實(shí)現(xiàn)細(xì)節(jié),發(fā)現(xiàn)自己想的、推理的和網(wǎng)上搜索到資料以及師兄的回答幾乎一致。
             下面就是我在網(wǎng)上所搜索的資料


          一、IM技術(shù)概念

            IM技術(shù)全稱Instant Messaging,中文翻譯“即時(shí)通訊”,它是一種使人們能在網(wǎng)上識(shí)別在線用戶并與他們實(shí)時(shí)交換消息的技術(shù),是電子郵件發(fā)明以來(lái)迅速崛起的在線通訊方式。IM的出現(xiàn)和互聯(lián)網(wǎng)有著密不可分的關(guān)系,IM完全基于TCP/IP網(wǎng)絡(luò)協(xié)議族實(shí)現(xiàn),而TCP/IP協(xié)議族則是整個(gè)互聯(lián)網(wǎng)得以實(shí)現(xiàn)的技術(shù)基礎(chǔ)。 最早出現(xiàn)即時(shí)通訊協(xié)議是IRC(Internet Relay Chat),但是可惜的是它僅能單純的使用文字、符號(hào)的方式通過互聯(lián)網(wǎng)進(jìn)行交談和溝通。隨著互連網(wǎng)變得高度發(fā)達(dá),即時(shí)通訊也變得遠(yuǎn)不止聊天這么簡(jiǎn)單,自1996年第一個(gè)IM產(chǎn)品ICQ發(fā)明后,IM的技術(shù)和功能也開始基本成型,語(yǔ)音、視頻、文件共享、短信發(fā)送等高級(jí)信息交換功能都可以在IM工具上實(shí)現(xiàn),于是功能強(qiáng)大的IM軟件便足以搭建一個(gè)完整的通信交流平臺(tái)。目前最具代表性的幾款的IM通訊軟件有MSN、Google Talk、Yahoo、Messenger 、騰訊QQ等。 

           二、IM技術(shù)原理和工作方式

            典型的IM工作方式如下:登陸IM通訊中心(IM通訊服務(wù)器),獲取一個(gè)自建立的歷史的交流對(duì)象列表(好友列表),然后自身標(biāo)志為在線狀態(tài),當(dāng)好友列表中的某人在任何時(shí)候登錄上線并試圖通過你的計(jì)算機(jī)聯(lián)系你時(shí),IM系統(tǒng)會(huì)發(fā)一個(gè)消息提醒你,然后你能與他建立一個(gè)聊天會(huì)話通道進(jìn)行各種消息如鍵入文字、通過語(yǔ)音等的交流,  從技術(shù)上來(lái)說,IM的基本技術(shù)原理如下:  IM服務(wù)器  登陸或注銷 登陸或注銷  用戶A通過列表找到B,用戶B獲得的消息并與之交談  通過IM服務(wù)器指引建立與B單獨(dú)的通訊通道  第一步,用戶A輸入自己的用戶名和密碼登錄IM服務(wù)器,服務(wù)器通過讀取用戶數(shù)據(jù)庫(kù)來(lái)驗(yàn)證用戶身份,如果驗(yàn)證通過,登記用戶A的IP地址、IM客戶端軟件的版本號(hào)及使用的TCP/UDP端口號(hào),然后返回用戶A登錄成功的標(biāo)志,此時(shí)用戶A在IM系統(tǒng)中的狀態(tài)為在線(Online Presence)。  第二步,根據(jù)用戶A存儲(chǔ)在IM服務(wù)器上的好友列表(Buddy List),服務(wù)器將用戶A在線的相關(guān)信息發(fā)送給也同時(shí)在線的IM好友的PC機(jī),這些信息包括在線狀態(tài)、IP地址、IM客戶端使用的TCP端口(Port)號(hào)等,IM好友的客戶端收到此信息后將在予以提示。  第三步是IM服務(wù)器把用戶A存儲(chǔ)在服務(wù)器上的好友列表及相關(guān)信息回送到他的客戶端機(jī),這些信息包括也在線狀態(tài)、IP地址、IM客戶端使用的TCP端口(Port)號(hào)等信息,用戶A的IM客戶端收到后將顯示這些好友列表及其在線狀態(tài)。  


           三、IM通訊方式  
          1.在線直接通訊  如果用戶A想與他的在線好友用戶B聊天,他將直接通過服務(wù)器發(fā)送過來(lái)的用戶B的IP地址、TCP端口號(hào)等信息,直接向用戶B的PC機(jī)發(fā)出聊天信息,用戶B的IM客戶端軟件收到后顯示在屏幕上,然后用戶B再直接回復(fù)到用戶A的PC機(jī),這樣雙方的即時(shí)文字消息就不再IM服務(wù)器中轉(zhuǎn),而是直接通過網(wǎng)絡(luò)進(jìn)行點(diǎn)對(duì)點(diǎn)的通訊,即對(duì)等通訊方式(Peer To Peer)。  
          2.在線代理通訊  用戶A與用戶B的點(diǎn)對(duì)點(diǎn)通訊由于防火墻、網(wǎng)絡(luò)速度等原因難以建立或者速度很慢,IM服務(wù)器將會(huì)主動(dòng)提供消息中轉(zhuǎn)服務(wù),即用戶A和用戶B的即時(shí)消息全部先發(fā)送到IM服務(wù)器,再由服務(wù)器轉(zhuǎn)發(fā)給對(duì)方。 
          3.離線代理通訊  用戶A與用戶B由于各種原因不能同時(shí)在線的時(shí)候,如此時(shí)A向B發(fā)送消息,IM服務(wù)器可以主動(dòng)寄存A用戶的消息,到B用戶下一次登陸的時(shí)候,自動(dòng)將消息轉(zhuǎn)發(fā)給B。  
          4.擴(kuò)展方式通訊  用戶A可以通過IM服務(wù)器將信息以擴(kuò)展的方式傳遞給B,如短信發(fā)送方式發(fā)送到B的手機(jī),傳真發(fā)送方式傳遞給B的電話機(jī),以email的方式傳遞給B的電子郵箱等。  早期的IM系統(tǒng),在IM客戶端和IM服務(wù)器之間通訊采用UDP協(xié)議,UDP協(xié)議是不可靠的傳輸協(xié)議,而在IM客戶端之間的直接通訊中,采用具備可靠傳輸能力的TCP協(xié)議。隨著用戶需求和技術(shù)環(huán)境的發(fā)展,目前主流的IM系統(tǒng)傾向于在IM客戶端之間、IM客戶端和IM服務(wù)器之間都采用TCP協(xié)議。  即時(shí)通訊相對(duì)于其他通訊方式如電話、傳真、email等的最大優(yōu)勢(shì)就是消息傳達(dá)的即時(shí)性和精確性,只要消息傳遞雙方均在網(wǎng)絡(luò)上可以互通,使用即時(shí)通訊軟件傳遞消息,傳遞延時(shí)僅為1秒種  


          四、興起的嵌入式IM工具。 
             傳統(tǒng)的IM在統(tǒng)治了互聯(lián)網(wǎng)即時(shí)通訊領(lǐng)域長(zhǎng)達(dá)十年之久,以其日趨穩(wěn)定的定能,與較強(qiáng)的用戶黏著度,至今仍統(tǒng)治著這個(gè)巨大的市場(chǎng)。然而,軟件行業(yè)的技術(shù)精英們,并不滿足于此。他們厚積薄發(fā),一直致力于開發(fā)出性能更為優(yōu)越的即時(shí)通訊工具。當(dāng)然,在功能上的不斷完善,自然是一個(gè)必然的發(fā)展方向,在Web2.0時(shí)代,如何大力增強(qiáng)用戶對(duì)網(wǎng)站的黏著度,而不僅僅是對(duì)于IM的擁附,已經(jīng)成為他們的主攻方向了。于是,嵌入式IM工具,應(yīng)運(yùn)而生了。  

            相對(duì)以往的傳統(tǒng)的即使溝通工具,它們需要用戶下載軟件包,需要用戶進(jìn)行安裝。對(duì)于擁有IM產(chǎn)品的網(wǎng)站而言,用戶在登陸網(wǎng)站后,不能直接使用其IM工具,對(duì)于流量與用戶的黏著度,都是有一定影響的。因此在IM與網(wǎng)站相互依存的今天,沒有哪家網(wǎng)絡(luò)公司,愿意將IM工具孤立開來(lái)。    于是,目前,一種新型的嵌入式IM工具就應(yīng)運(yùn)而生了。這種IM工具,不需要下載安裝,當(dāng)用戶登陸網(wǎng)頁(yè)后,該IM直接嵌套在網(wǎng)頁(yè)中,可以直接使用。   
           而在功能上,則一點(diǎn)也不輸于傳統(tǒng)的IM,無(wú)論是傳統(tǒng)的文字溝通的速度與效率,還是近年來(lái)越來(lái)越成為IM工具必備的音頻/視頻功能,這種嵌入式IM都能提供非常穩(wěn)定的傳輸。更值得一提的是,因?yàn)榍度胧絀M是嵌套在網(wǎng)頁(yè)上的,軟件供應(yīng)商,可以根據(jù)網(wǎng)站需求,設(shè)計(jì)出適合網(wǎng)站風(fēng)格的IM產(chǎn)品。而不是像傳統(tǒng)的IM工具,千篇一律,毫無(wú)個(gè)性可言。   
           目前,這類嵌入式IM在社區(qū)、交友、社團(tuán)及協(xié)作等類型的網(wǎng)站上,應(yīng)用已經(jīng)較為廣泛。在Web2.0時(shí)代,將發(fā)揮越來(lái)越重要的作用。

          posted on 2008-08-29 13:06 李威威 閱讀(4707) 評(píng)論(3)  編輯  收藏
          Comments
          • # re: QQ原理
            renrui
            Posted @ 2009-01-12 11:50
            通過IM服務(wù)器指引建立與B單獨(dú)的通訊通道,這個(gè)通道怎么建立?通過線程?  回復(fù)  更多評(píng)論   
          • # re: QQ原理
            李威威
            Posted @ 2009-03-31 23:09
            不好意思,很久沒來(lái)博客了,因工作原因目前暫時(shí)沒有學(xué)習(xí)java了,不過有時(shí)間還是會(huì)繼續(xù)學(xué)習(xí)深入的,至于“通過IM服務(wù)器指引建立與B單獨(dú)的通訊通道,這個(gè)通道怎么建立?通過線程” ,還沒有深入到這個(gè)問題,可以互相交流學(xué)習(xí)進(jìn)步,謝謝你的關(guān)注  回復(fù)  更多評(píng)論   
          • # re: QQ原理[未登錄]
            abc
            Posted @ 2012-05-20 14:33
            太籠統(tǒng),沒實(shí)際價(jià)值  回復(fù)  更多評(píng)論   

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 宾阳县| 黄浦区| 双江| 应用必备| 祥云县| 英德市| 河南省| 大宁县| 游戏| 城市| 枣强县| 滦南县| 余姚市| 磐石市| 海阳市| 清丰县| 石楼县| 磐安县| 苏州市| 津南区| 岐山县| 井研县| 含山县| 报价| 清远市| 黄浦区| 偏关县| 凯里市| 阳山县| 邵武市| 鄂尔多斯市| 屏东县| 巴东县| 南京市| 柳江县| 年辖:市辖区| 夏津县| 陇西县| 大安市| 通山县| 清新县|