監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

對(duì)P2P應(yīng)用程序開發(fā)框架的研究

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

  1概述

  P2P應(yīng)用程序以一種分布的方式管理和組織位于互聯(lián)網(wǎng)邊緣的各種資源。位于互聯(lián)網(wǎng)邊緣的通常都是一些聯(lián)網(wǎng)的普通PC。在傳統(tǒng)的C/S網(wǎng)絡(luò)模式下,普通PC作為客戶端,通過(guò)向位于Intemet中的各種服務(wù)器發(fā)送請(qǐng)求來(lái)完成一些任務(wù)。相反在P2P模式下,普通PC直接與互聯(lián)網(wǎng)中成千上萬(wàn)臺(tái)計(jì)算機(jī)相連,實(shí)現(xiàn)信息和數(shù)據(jù)的共享。因?yàn)榕c用戶計(jì)算機(jī)相連的各種計(jì)算機(jī)資源的聯(lián)網(wǎng)狀態(tài)是不穩(wěn)定的,所以P2P協(xié)議被設(shè)計(jì)為可以在不穩(wěn)定的聯(lián)網(wǎng)和動(dòng)態(tài)的 地址的情況下實(shí)現(xiàn)網(wǎng)絡(luò)操作的一種通訊規(guī)則。

  P2P應(yīng)用程序的開發(fā)要比C/s應(yīng)用程序的開發(fā)復(fù)雜一些。在P2P系統(tǒng)中,所有的計(jì)算機(jī)(節(jié)點(diǎn))都運(yùn)行相同的程序。開發(fā)P2P應(yīng)用程序要解決如下一些問(wèn)題:

  (1)聯(lián)通性:如何找到和連接其他的P2P節(jié)點(diǎn),這些節(jié)點(diǎn)通常不具有固定IP;(2)消息路由:消息如何從一個(gè)節(jié)點(diǎn)路由到另一個(gè)節(jié)點(diǎn),源節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)之間互相都不知道對(duì)方的位置;(3)搜索:如何從網(wǎng)絡(luò)節(jié)點(diǎn)中找到需要的信息;(4)安全:在這方面存在很多的問(wèn)題,包括節(jié)點(diǎn)如何信任其它節(jié)點(diǎn)等。

  本文將會(huì)針對(duì)開發(fā)P2P應(yīng)用程序的相關(guān)問(wèn)題提出一個(gè)簡(jiǎn)單的P2P應(yīng)用程序開發(fā)框架。

  2 P2P應(yīng)用程序開發(fā)框架基本結(jié)構(gòu)

  該P(yáng)2P應(yīng)用程序開發(fā)框架的基本結(jié)構(gòu)如圖1所示,在該圖中也演示了網(wǎng)絡(luò)節(jié)點(diǎn)之間相互通訊的全部過(guò)程。

  在節(jié)點(diǎn)中運(yùn)行的P2P應(yīng)用程序向用戶提供了一個(gè)界面,并且運(yùn)行了一個(gè)用于監(jiān)聽(tīng)從其它節(jié)點(diǎn)發(fā)來(lái)的連接請(qǐng)求的主循環(huán)。用戶可以單擊節(jié)點(diǎn)A圖形界面中的一個(gè)按鈕(比如搜索按鈕),與該按鈕相關(guān)的程序就會(huì)向節(jié)點(diǎn)B發(fā)出“Query“消息,請(qǐng)求與節(jié)點(diǎn)B建立連接。節(jié)點(diǎn)B的主循環(huán)檢測(cè)到節(jié)點(diǎn)A發(fā)出的連接請(qǐng)求后,會(huì)啟動(dòng)一個(gè)單獨(dú)的線程來(lái)處理這個(gè)請(qǐng)求。一旦節(jié)點(diǎn)A與節(jié)點(diǎn)B建立了連接,節(jié)點(diǎn)A就會(huì)向節(jié)點(diǎn)B發(fā)送包含了真正要處理數(shù)據(jù)的消息,節(jié)點(diǎn)B中的相應(yīng)線程就會(huì)接收消息并向節(jié)點(diǎn)A發(fā)出回復(fù),然后關(guān)閉與節(jié)點(diǎn)A的連接,再根據(jù)節(jié)點(diǎn)A發(fā)送給自己的消息類型,調(diào)用相應(yīng)的消息處理函數(shù)處理該消息。處理完消息中包含的數(shù)據(jù)之后,節(jié)點(diǎn)B會(huì)主動(dòng)連接節(jié)點(diǎn)A,并向節(jié)點(diǎn)A發(fā)出“Query Response”的消息。

  3核心模塊

  上述P2P節(jié)點(diǎn)之間的數(shù)據(jù)通訊功能是基于一個(gè)簡(jiǎn)單的開發(fā)框架實(shí)現(xiàn)的,該框架中包括除用戶界面之外的兩個(gè)重要的功能模塊。

  3.1節(jié)點(diǎn)模塊

  節(jié)點(diǎn)模塊管理著網(wǎng)絡(luò)節(jié)點(diǎn)的全部操作功能。該模塊包含一個(gè)用于監(jiān)聽(tīng)連接請(qǐng)求和啟動(dòng)消息處理線程的主循環(huán)。借助該框架進(jìn)行P2P應(yīng)用開發(fā)的程序員可以在節(jié)點(diǎn)模塊中注冊(cè)新的消息處理句柄(函數(shù)或方法),該模塊中的主循環(huán)會(huì)根據(jù)節(jié)點(diǎn)接收到的消息類型分配相應(yīng)的消息處理句柄進(jìn)行消息的處理。一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)啟動(dòng)初始化時(shí)會(huì)提供一個(gè)監(jiān)聽(tīng)連接請(qǐng)求的端口,一個(gè)IP地址以及一個(gè)節(jié)點(diǎn)標(biāo)識(shí)符。

  節(jié)點(diǎn)模塊也維護(hù)著一個(gè)已知節(jié)點(diǎn)列表,該列表的大小是有限制的,節(jié)點(diǎn)可以通過(guò)標(biāo)識(shí)符或者在列表中的順序位置來(lái)訪問(wèn)這些已知節(jié)點(diǎn)。

  除了存儲(chǔ)各種不同類型消息的處理句柄之外,節(jié)點(diǎn)模塊還存儲(chǔ)了程序員編寫的用來(lái)決定如何路由消息的函數(shù)。節(jié)點(diǎn)模塊也能以固定間隔允許固定的操作程序。

  3.2節(jié)點(diǎn)連接模塊

  節(jié)點(diǎn)連接模塊封裝了用于連接其它節(jié)點(diǎn)的套接字。該框架使用TCP/IP協(xié)議在節(jié)點(diǎn)之間進(jìn)行通訊。節(jié)點(diǎn)連接模塊提供了可以讓程序員非常容易發(fā)送和接收消息的各種方法,這些方法保證了消息的編碼格式的正確。另外,節(jié)點(diǎn)連接模塊也可以偵測(cè)到P2P數(shù)據(jù)傳輸過(guò)程中出現(xiàn)的各種錯(cuò)誤。

  該框架中定義的消息包含一個(gè)8字節(jié)長(zhǎng)度的消息頭,該消息頭中有4個(gè)字節(jié)用來(lái)存放消息的類型標(biāo)識(shí),另外4字節(jié)用來(lái)存放一個(gè)表示消息中數(shù)據(jù)長(zhǎng)度的整數(shù)。4字節(jié)的消息類型標(biāo)識(shí)可以被看作是字符串。因此,程序員可以用自定義的長(zhǎng)度為4-T-節(jié)的字符串來(lái)標(biāo)識(shí)各種不同的消息類型。當(dāng)節(jié)點(diǎn)中的主循環(huán)接收到消息后,它就會(huì)根據(jù)消息類型將消息分配給正確的處理句柄。消息句柄是一個(gè)可以接收節(jié)點(diǎn)連接模塊對(duì)象引用和消息類型的函數(shù),句柄可以根據(jù)消息類型被注冊(cè)。目前,該框架被設(shè)計(jì)為一個(gè)消息僅對(duì)應(yīng)一個(gè)句柄對(duì)象的1:1模式。當(dāng)節(jié)點(diǎn)模塊接收到一個(gè)連接請(qǐng)求時(shí),它就會(huì)建立一個(gè)節(jié)點(diǎn)連接模塊對(duì)象,該對(duì)象讀取其它節(jié)點(diǎn)發(fā)來(lái)的消息類型,啟動(dòng)一個(gè)線程處理消息中的數(shù)據(jù),當(dāng)消息句柄完成它的任務(wù)后,節(jié)點(diǎn)連接自動(dòng)關(guān)閉。

  4結(jié)語(yǔ)

  P2P應(yīng)用程序的開發(fā)難度較大,借助于框架技術(shù)可以大大簡(jiǎn)化開發(fā)過(guò)程,提高開發(fā)效率。本文提出的這個(gè)簡(jiǎn)單的開發(fā)框架對(duì)P2P應(yīng)用程序的開發(fā)起到了一定的改進(jìn)作用。

發(fā)布:2007-03-11 10:28    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
軟件產(chǎn)品
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢