青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

一種Jingle開源庫的文件傳輸原理與實現(xiàn)

轉(zhuǎn)載自:http://www.lunwen163.com/h/163-14/14903.htm

  要:本文以XMPP擴(kuò)展P2P協(xié)議的開源庫libjingle為研究對象,重點(diǎn)分析了libjingle文件傳輸原理、文件傳輸過程以及文件傳輸協(xié)議格式,在libjingle基礎(chǔ)上提出了文件傳輸應(yīng)用程序類構(gòu)架,最終實現(xiàn)開發(fā)基于Jingle協(xié)議的文件傳輸應(yīng)用程序.

0    引言

隨著即時通信(IM)軟件已經(jīng)成為互聯(lián)網(wǎng)信息平臺的重要組成部分[4]。但基于自身利益的考慮,各個IM軟件均制定并保守自己支持的通信協(xié)議格式和標(biāo)準(zhǔn),導(dǎo)致了各個通信軟件不能互聯(lián)互通,客觀上制約了IM的發(fā)展。

XMPP協(xié)議標(biāo)準(zhǔn)解決了不同即時通信平臺信息互通的難題。基于XMPP擴(kuò)展P2P協(xié)議的應(yīng)用開源庫libjingle庫可以開發(fā)第三方IM軟件,最終實現(xiàn)第三方IM與支持XMPP協(xié)議的即時通信軟件的文本和語音等的互操作。

本文以libjingle為研究對象,重點(diǎn)討論libjingle支持的文件傳輸?shù)膶崿F(xiàn)原理和協(xié)議格式,以及介紹以libjingle庫開發(fā)文本傳輸?shù)幕緦崿F(xiàn)。

1    libjingle文件傳輸通信原理

1.1    libjingle介紹

libjingleGoogle公司推出的基于語音和P2P通信的C++開源庫。利用libjingle開源庫能夠開發(fā)出第三方的Jingle點(diǎn)到點(diǎn)通信應(yīng)用程序,實現(xiàn)與所有支持XMPP以及Jingle擴(kuò)展協(xié)議的軟件實現(xiàn)通信。

1.2    libjingle通信系統(tǒng)構(gòu)架

libjingle在語音、視頻、文件等傳輸方面具有良好的健壯性,這要得益于libjingle采用信令和數(shù)據(jù)分信道傳輸?shù)臋C(jī)制,即libjingle采用了信令在帶內(nèi)信道傳輸,用戶數(shù)據(jù)在帶外信道上傳輸?shù)臋C(jī)制。

 libjingle通信信道

libjingle的連接包括2種信道(如圖1[12]。一是會話協(xié)商信道,或者稱為XMPP信令信道,此為帶內(nèi)信道。會話協(xié)商信道協(xié)商信令必須通過中間Jingle Server。二是帶外信道也即數(shù)據(jù)信道。通過數(shù)據(jù)傳輸信道實現(xiàn)用戶數(shù)據(jù)的傳輸,這些數(shù)據(jù)包括語音、視頻、文本等。

 libjingle數(shù)據(jù)傳輸路徑

對于數(shù)據(jù)傳輸通道,在libjingle中,根據(jù)有無防火墻或者NAT設(shè)備,有3種不同數(shù)據(jù)傳輸路徑(如圖1[12]。在有防火墻或者NAT設(shè)備的情況下,包括通信雙方的直接連接通信和通過中繼服務(wù)器轉(zhuǎn)發(fā)連接通信。

 libjingle穿透防火墻或者NAT技術(shù)

libjingle一個最重要的能力就是能夠穿透防火墻或者NAT設(shè)備來協(xié)商連接。其使用ICEInteractive Connectivity Establishment )技術(shù)來實現(xiàn)穿透防火墻。

---------------------------------

 1.3    libjingle文件傳輸協(xié)議格式

   libjingle文件傳輸協(xié)議基于P2P的通信協(xié)議。相對于音頻視頻采用UDP連接通信,文件傳輸采用一種TCP-LikePseudoTCP)連接通信的格式[1]PseudoTCP格式(如圖2)是TCP的改進(jìn)版,如下所示,其中PseudoTCP頭共24個字節(jié)。

    ① 會話數(shù)(Conversation Number)32位,記錄所有的會話數(shù)。

 

② 序列碼(Sequence Number):32位,用來表示從發(fā)送端到接收端字節(jié)流數(shù)。

③ 確認(rèn)碼序號(Acknowledgment Number):32位,如果設(shè)置了ACK控制位為1,確認(rèn)碼序號這個值表示一個準(zhǔn)備接收的下一個包的序列碼。

 Pseudo控制位(PseudoCTL):8位,表示PseudoTCP連接過程的狀態(tài)。

⑤ 控制位(Control):共6位,依此包括URG位、ACK位、PSH位、 RST位、 SYN位、 FIN位。

⑥ 窗口(Window):16位;接收端告訴發(fā)送端,其要求收到的TCP數(shù)據(jù)段大小。

⑦ 發(fā)送時間戳(Timestamp sending):32位,表示發(fā)送數(shù)據(jù)報時間。

⑧ 接收時間戳(Timestamp receiving):32位,表示接收到數(shù)據(jù)報時間。

相對于TCP連接,UDP連接更加容易通過NATlibjingleTCP-Like數(shù)據(jù)報具有TCP報連接傳輸?shù)墓δ埽WC了文件傳輸?shù)目煽啃裕灰淄ㄟ^防火墻或者NAT [5]。通過PseudoTCP數(shù)據(jù)報頭加了UDP頭,組成了一個具有TCP功能的UDP數(shù)據(jù)報(如圖3)。

2    libjingle文件傳輸?shù)膶崿F(xiàn)

通過libjingle提供的C++源代碼庫,能夠開發(fā)出自己的Jingle ServerJingle Client

2.1    libjingle文件傳輸類

libjingle文件傳輸客戶端分文四個部分 [1],一是用戶應(yīng)用(Application)接口單元;二是XMPP報文傳輸單元(XMPP Messaging Component ),此單元是XMPP信令在應(yīng)用程序和網(wǎng)絡(luò)之間傳輸?shù)慕涌冢蝗菚掃壿嫼蜁捁芾韱卧?span>(Session Logic and Management Component ),控制每一個會話類型具體的邏輯請求;四是點(diǎn)到點(diǎn)傳輸單元(Peer-to-Peer Component),主要作用是管理本地與遠(yuǎn)程計算機(jī)的連接。

報文傳輸單元中,XmppPump是頂層管理類。XmppClient是應(yīng)用程序與網(wǎng)絡(luò)傳輸XMPP信號的出口與入口點(diǎn)。XmppTask以及其派生類作為異步的XMPP任務(wù)類,能夠扮演xmpp信令的發(fā)起者、偵聽者或者兩者兼有的角色。

會話邏輯和會話管理單元的主要類包括SessionTransporPseudoTCPChannelTransportChannelSessionManagerHttpPortAllocator等。Session類主要作用包括在XMPP隧道上協(xié)商文件數(shù)據(jù)傳輸隧道,以及監(jiān)測、建立、斷開數(shù)據(jù)傳輸連接。

2.2 libjingle文件傳輸具體流程

文件的P2P傳輸首先是登錄 XMPP服務(wù)器,然后才能在兩用戶端實現(xiàn)文件的傳輸。具體實現(xiàn)流程如下。

① 客戶端應(yīng)用程序啟動,登錄XMPP服務(wù)器。首先初始化SSL,保證數(shù)據(jù)傳輸安全,然后創(chuàng)建一個信令線程。從用戶那里得到用戶信息比如登錄名、密碼等信息初始化XmppClientSettings對象,創(chuàng)建一個XMPP任務(wù)管理對象XmppPump,由XmppPump創(chuàng)建XmppClient對象和控制登錄服務(wù)器。

② 協(xié)商建立文件傳輸會話連接,并在雙方傳輸文件。客戶端運(yùn)行 HttpClient實例對象,HttpClient對象發(fā)送一個基本的GET請求通過P2PTransport對象實現(xiàn)連接協(xié)商。而在服務(wù)器端運(yùn)行一個HttpServer實例對象,HttpServer實例對象接收連接請求,創(chuàng)建一個PseudoTcpChannel對象控制連接,然后創(chuàng)建和發(fā)送一個在本地存取文件的流接口點(diǎn)。使用數(shù)據(jù)流的形式讀文件,文件數(shù)據(jù)流的發(fā)送通過PseudoTcpChannel對象。文件數(shù)據(jù)流最終通過TransportChannel發(fā)送出并通過網(wǎng)絡(luò)到達(dá)接收方。在接收方,TransportChannel對象接收文件數(shù)據(jù)流信息,并把數(shù)據(jù)流轉(zhuǎn)換成StreamInterface流,最終通過PseudoTcpChannelStreamInterface流反饋給HttpClient對象,由HttpClient對象把數(shù)據(jù)以文件的形式存儲在存儲器上。

結(jié)束語

本文分析了libjingle開源庫的文件傳輸原理,并描述了利用libjingle開發(fā)文件傳輸客戶端的實現(xiàn)過程。libjingle文件傳輸采用具有TCP功能的UDP連接,即具有良好的可靠性,又能方便的通過NAT,實現(xiàn)真正的全網(wǎng)無障礙通信。但是,libjingle的文件傳輸協(xié)議并沒有成為一個成熟的標(biāo)準(zhǔn),其通用性還有待改善。

[參考文獻(xiàn)]

[1] Google.libjingleE B /OL.(2008-01-10) [2008 -10-20].http://code. google.com/apis/talk/libj ingle/.

[2]xmpp.org.XMPP ExtensionsE B /OL.(2008-02-01) [2008-10-20]. http://xmpp. org/extensions/ .

 

[3]  張彥 . Jabber/XMPP技術(shù)的研究與應(yīng)用[J] . 科學(xué)技術(shù)與工程,200776):1032-1035.

[4] 張文茂等 . 互聯(lián)網(wǎng)即時消息(InstantMessag ing,IM)的研究現(xiàn)狀和展望[J . 小型微型計算機(jī)系統(tǒng),2007,(7):62-68.


posted on 2013-09-01 14:19 楊粼波 閱讀(2475) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三区在线看| 亚洲欧美视频在线观看视频| 亚洲东热激情| 亚洲激情黄色| 亚洲精品日产精品乱码不卡| 亚洲人在线视频| 亚洲精品中文字幕在线观看| 一本久道综合久久精品| 一级成人国产| 午夜久久黄色| 久久精品99| 免费人成网站在线观看欧美高清| 女生裸体视频一区二区三区| 亚洲成人在线视频播放 | 日韩特黄影片| 99re6这里只有精品| 一区二区三区国产在线观看| 亚洲午夜精品17c| 欧美一区三区三区高中清蜜桃| 久久成人免费| 欧美成人中文| 欧美日韩综合视频网址| 国产精品久久久久久久久久免费| 国产精品久久久久久久久久直播| 国产一区二区成人| 亚洲国产高清视频| 在线亚洲欧美专区二区| 欧美影院久久久| 欧美aⅴ99久久黑人专区| 亚洲国产日韩欧美| 亚洲午夜av| 久久综合狠狠| 国产精品久久97| 激情一区二区三区| 亚洲色图制服丝袜| 久久精品国产一区二区三区免费看 | 久久久噜噜噜久久中文字免| 欧美不卡福利| 中文精品99久久国产香蕉| 久久成人18免费观看| 欧美黄色一区| 国产日韩欧美精品| 亚洲精品欧美激情| 欧美在线一区二区三区| 欧美刺激午夜性久久久久久久| 亚洲毛片av在线| 久久精品一区二区三区中文字幕 | 国产乱人伦精品一区二区 | 亚洲一区二区成人| 久久久免费精品视频| 最新国产精品拍自在线播放| 午夜久久99| 欧美日韩一区三区| 亚洲第一精品夜夜躁人人躁| 亚洲综合日韩在线| 亚洲黄色一区二区三区| 欧美一区成人| 欧美日韩一区二区国产| 永久免费精品影视网站| 午夜久久黄色| 亚洲美女在线视频| 玖玖综合伊人| 国产一区二区三区自拍| 一本色道久久88综合日韩精品| 久久手机精品视频| 午夜精品电影| 欧美手机在线| 日韩小视频在线观看专区| 噜噜噜噜噜久久久久久91| 亚洲在线视频| 欧美四级在线| 一本不卡影院| 亚洲国产精品久久| 久久婷婷人人澡人人喊人人爽| 国产精品视频内| 在线视频一区观看| 亚洲国产福利在线| 免费的成人av| 在线看不卡av| 免费看亚洲片| 久久欧美中文字幕| 在线成人欧美| 美女脱光内衣内裤视频久久网站| 性欧美1819sex性高清| 国产精品手机在线| 亚洲影院免费观看| 一本一本久久a久久精品综合麻豆| 欧美电影免费观看高清| 亚洲黄色有码视频| 欧美成人激情在线| 乱人伦精品视频在线观看| 狠狠色狠狠色综合日日tαg | 午夜在线一区二区| 国产精品一区视频| 久久高清国产| 欧美在线地址| 一区二区三区在线高清| 久久欧美中文字幕| 久久精品导航| 精品动漫一区二区| 欧美成人影音| 欧美jizzhd精品欧美喷水 | 韩国三级在线一区| 久久久www| 久久久国产精品一区| 黑人巨大精品欧美一区二区小视频| 欧美中在线观看| 久久福利精品| 亚洲国产91精品在线观看| 欧美国产日韩一区二区三区| 免费在线亚洲欧美| 夜夜爽99久久国产综合精品女不卡| 亚洲精品欧美极品| 国产精品国产三级国产普通话99| 亚洲一区二区在线| 亚洲欧美在线aaa| 狠狠综合久久av一区二区小说| 老司机67194精品线观看| 久久网站免费| 一区二区三区高清视频在线观看| 99ri日韩精品视频| 国产欧美日韩精品丝袜高跟鞋| 久久亚洲国产精品一区二区| 麻豆freexxxx性91精品| 一本色道88久久加勒比精品 | 亚洲在线成人精品| 国产一区美女| 亚洲成人资源网| 欧美性jizz18性欧美| 久久激情综合网| 欧美69视频| 新67194成人永久网站| 久久久精品国产一区二区三区| 亚洲人妖在线| 亚洲综合成人在线| 亚洲第一成人在线| 99v久久综合狠狠综合久久| 国产亚洲一区在线播放| 91久久精品国产91久久性色tv | 亚洲一级影院| 欧美一区二区三区在线观看视频| 亚洲福利小视频| 中文在线不卡| 亚洲大片精品永久免费| 中文av一区特黄| 在线观看亚洲视频啊啊啊啊| 日韩视频第一页| 极品少妇一区二区三区| 日韩视频不卡中文| 一区二区亚洲精品国产| 99精品国产在热久久| 影音先锋久久| 亚洲一区二区免费| 在线不卡免费欧美| 在线亚洲精品| 最新亚洲一区| 欧美一级大片在线观看| 艳女tv在线观看国产一区| 久久国产精品亚洲77777| 亚洲视频在线观看免费| 久久久久久伊人| 午夜精品久久久久久| 欧美成人午夜激情视频| 久久久久久久一区二区| 欧美香蕉视频| 亚洲国产小视频| 悠悠资源网亚洲青| 亚洲永久网站| 亚洲性视频网站| 欧美aa国产视频| 久久这里只有| 国产麻豆精品久久一二三| 亚洲精品久久久久久久久久久久久| 韩国亚洲精品| 香蕉国产精品偷在线观看不卡| 一区二区久久久久| 美国十次成人| 免费视频久久| 韩国免费一区| 欧美一级一区| 欧美一级片久久久久久久| 欧美日韩在线播放一区| 亚洲高清资源| 在线视频国内自拍亚洲视频| 性欧美1819性猛交| 欧美一区二区在线免费播放| 欧美视频官网| 99精品黄色片免费大全| 一级日韩一区在线观看| 欧美黄污视频| 亚洲国产精品高清久久久| 91久久精品美女高潮| 久久性天堂网| 欧美电影免费观看大全| 狠狠色狠狠色综合日日五| 久久精精品视频| 久久深夜福利| 在线播放日韩| 狼狼综合久久久久综合网| 欧美成人精品在线|