專利名稱:移動無線自組網(wǎng)消息廣播和接收的方法及所用終端節(jié)點的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動無線自組網(wǎng),特別是指該網(wǎng)絡(luò)中消息廣播和接收的方法 和系統(tǒng)。
背景技術(shù):
Ad-Hoc網(wǎng)絡(luò)是一種無線自組網(wǎng)絡(luò),即由一組帶有無線收發(fā)裝置的移動 終端(也稱為節(jié)點或終端節(jié)點)組成的一個多跳臨時性系統(tǒng)。系統(tǒng)中,節(jié)點 可以自由移動,形成任意的拓樸結(jié)構(gòu)。Ad-Hoc網(wǎng)絡(luò)中,每個移動終端作為 主機運行面向用戶的應(yīng)用程序;同時作為路由器,運行相應(yīng)的路由協(xié)議,根 據(jù)路由策略和路由表參與分組轉(zhuǎn)發(fā)和路由維護工作。在Adhoc網(wǎng)絡(luò)中,兩 個相鄰的終端可以進行直接的"端到端"通信;由于終端的無線傳輸范圍有 限,兩個無法直接通信的終端節(jié)點往往要通過多個中間節(jié)點的轉(zhuǎn)發(fā)來實現(xiàn)通 信。其應(yīng)用范圍可以覆蓋工業(yè),商業(yè),醫(yī)療,家庭,辦公環(huán)境,軍事等各種 場合。IEEE 802.11標準(以下簡稱標準)定義了兩種組網(wǎng)結(jié)構(gòu)獨立基本服 務(wù)組IBSS (Individual Basic Service Set)和擴展服務(wù)組ESS。其中的獨立基 本服務(wù)組是一種Ad Hoc組網(wǎng)形式。此外,還有其他物理標準的Ad Hoc網(wǎng) 絡(luò),比如HomeRF/Bluetooth/Zigbee。IBSS(AD-HOC)中的節(jié)點(或稱站點)必須以DCF方式訪問信道,DCF 是一種竟爭式共享信道技術(shù),基于CSMA/CA(CSMA/Collision Avoidance載 波監(jiān)聽多址接入/碰撞避免)協(xié)議,采用沖突避免機制盡量減小沖突碰撞發(fā) 生的概率。為了避免隱藏節(jié)點的影響,802.11 MAC中規(guī)定了 RTS,CTS,ACK 等類型的控制幀,圖1所示為帶RTS/CTS的DCF機制工作過程。當發(fā)射端 希望發(fā)送數(shù)據(jù)時,首先檢測介質(zhì)是否空閑,若是介質(zhì)為空閑時,送出RTS (Request To Send請求發(fā)送),RTS信號包括發(fā)射端的地址、接收端的地址、下一筆數(shù)據(jù)將持續(xù)發(fā)送的時間等信息,接收端收到RTS信號后,將響應(yīng)短 信號CTS(ClearToSend),當發(fā)射端收到CTS包后,隨即開始發(fā)送數(shù)據(jù)包, 接收端收到數(shù)據(jù)包后,若是CRC檢驗正確,接收端將響應(yīng)ACK包。雖然現(xiàn)在Ad Hoc的研究很熱門,但決定一種技術(shù)能否大規(guī)模商用的重 要因素是由市場決定的。從經(jīng)濟方面看,Ad Hoc網(wǎng)絡(luò)需要解決的主要問題 是尋找一些使它能夠從學(xué)術(shù)圈走向市場的重量級應(yīng)用。本發(fā)明所關(guān)注的就是 這些重量級應(yīng)用當中的一種移動無線自組網(wǎng)消息廣播器,該移動無線自組 網(wǎng)是人們拿著具有無線局域網(wǎng)模塊的電子設(shè)備自由組合而成的網(wǎng)絡(luò),可以發(fā) 生在任何特定區(qū)域,消息廣播器的功能是將用戶的需求盡可能的傳達到特定 區(qū)域內(nèi)所有嵌有無線自組網(wǎng)通訊硬件模塊的PDA或者智能手機等終端上。在AdHoc網(wǎng)絡(luò)中,移動終端發(fā)送數(shù)據(jù)是隨機的,很可能會出現(xiàn)很多終 端同時發(fā)送大量數(shù)據(jù)的情況,而發(fā)送數(shù)據(jù)的移動終端又可能是許多其他終端 傳遞數(shù)據(jù)的中繼或數(shù)據(jù)接收節(jié)點。因此,可能會出現(xiàn)以下幾種情況1) 引發(fā)廣播風暴以圖2所示的組網(wǎng)為例,終端A將消息發(fā)送到其無線傳輸范圍內(nèi)的終 端B、 C和D之后,終端C和D又會將該消息發(fā)送到終端B。這樣, 一個 節(jié)點多次收到同 一條內(nèi)容相同的消息,從而引發(fā)廣播風暴。2) 發(fā)送沖突由于隱藏節(jié)點的影響,很有可能某一個終端在不停地發(fā)送消息,導(dǎo)致別 的節(jié)點無法正確的接收到消息。另外,多個相鄰節(jié)點都想在某一時刻發(fā)送數(shù)據(jù),導(dǎo)致無線介質(zhì)的竟爭加 居'L目前業(yè)界的一些無線介質(zhì)竟爭標準常常會導(dǎo)致某些節(jié)點總會搶到大量的 帶寬,從而導(dǎo)致節(jié)點之間發(fā)送數(shù)據(jù)的幾率不平衡。3) 如果終端A —直在轉(zhuǎn)發(fā)別人的消息,也會使得終端A沒有時間來發(fā) 送其用戶編輯的消息。發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種移動無線自組網(wǎng)消息廣播、接收方 法及其系統(tǒng),可以將用戶的消息傳達到移動無線自組網(wǎng)中所有的終端,并盡 量避免發(fā)送沖突和廣播風暴。為了解決上述技術(shù)問題,本發(fā)明提供了 一種移動無線自組網(wǎng)的消息廣播 和接收方法,在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點的相鄰節(jié)點信息,其中消息廣播過程包括以下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,在前一 消息包發(fā)送完成后,取出消息隊列中最前面的消息包準備發(fā)送;(b) 將本節(jié)點的相鄰節(jié)點與該消息包緩存的相鄰節(jié)點進行比較,當相 同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,更新該消息包中緩存的相鄰節(jié)點信 息,執(zhí)行下一步;(c) 將該消息包交驅(qū)動層廣播發(fā)送; 在消息接收過程包括以下步驟(A)節(jié)點收到消息包;(B )才艮據(jù)該消息包中的相鄰節(jié)點信息,在本地緩存消息包發(fā)送節(jié)點的 相鄰節(jié)點信息或更新已保存的該節(jié)點的相鄰節(jié)點信息;(C)對該消息包進行轉(zhuǎn)發(fā)和顯示處理。進一步地,上述方法還可具有以下特點步驟(a)按以下排序規(guī)則中 的 一個或任意組合將消息包放入消息隊列規(guī)則一,將消息分為多個優(yōu)先級,其中原創(chuàng)消息包的優(yōu)先級高于轉(zhuǎn)發(fā)的 消息包,對于同 一優(yōu)先級的消息包按照時間順序來決定消息在隊列中的位 置,高優(yōu)先級的消息包可以插入到低優(yōu)先級的消息包前面;規(guī)則二,對于要轉(zhuǎn)發(fā)的消息包,如果隊列中最后N個消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊列 最后N-l個消息包前面。進一步地,上述方法還可具有以下特點所迷規(guī)則一中,在將高優(yōu)先級的消息包插入到低優(yōu)先級的消息包前面時,如果兩個高優(yōu)先級的消息包在消 息隊列中的位置相鄰,則至少要間隔一個低優(yōu)先級的消息包。進一步地,上迷方法還可具有以下特點在消息包結(jié)構(gòu)中還包含發(fā)送該消息包的節(jié)點的消息發(fā)送信息,而在節(jié)點 上緩存本節(jié)點和周邊節(jié)點的消息發(fā)送信息,本節(jié)點的消息發(fā)送信息中包含該節(jié)點消息發(fā)送隊列中各個消息包的發(fā)送時間段信息,周邊節(jié)點的消息發(fā)送信 息中包含相應(yīng)節(jié)點的標識及其消息發(fā)送隊列中各個消息包的發(fā)送時間段信 息;節(jié)點在一個時間段發(fā)送一個消息包,時間段長度對各節(jié)點是統(tǒng)一設(shè)定的;步驟(a)將消息包放入消息隊列時,按以下方法選定其發(fā)送時間段, 然后更新緩存在本地的本節(jié)點消息發(fā)送信息;如不插隊,查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時間段作為其發(fā)送時間段;如插隊時,插入隊列的消息包占用緊挨其后的消息包的發(fā)送時間段,而 后者占用緊隨其后的消息包的發(fā)送時間段,依此類推,對消息隊列的最后一 個消息包,則重新查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的空閑 時間段作為其發(fā)送時間段;步驟(c)中是在預(yù)定的發(fā)送時間段內(nèi)將該消息包交驅(qū)動層廣播發(fā)送;步驟(B)還根據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點 的消息發(fā)送信息或更新已有的該節(jié)點的消息發(fā)送信息。進一步地,上述方法還可具有以下特點所述相鄰節(jié)點信息包括相鄰節(jié) 點的個數(shù)信息和相鄰節(jié)點的標識信息;步驟(b)更新該消息包中緩存的相鄰節(jié)點時,是按本地緩存的相鄰節(jié) 點的相鄰節(jié)點個數(shù)的多少按序排列,得到相鄰節(jié)點序列;步驟(B)還根據(jù)消息包中包含的信息,同時更新本地緩存的消息包相 鄰節(jié)點序列當中與接收節(jié)點相鄰的節(jié)點的消息發(fā)送信息,如該節(jié)點是消息包 相鄰節(jié)點序列中相鄰節(jié)點個數(shù)排在第N位的節(jié)點,則在該節(jié)點的消息發(fā)送 信息中添加該消息包的發(fā)送時間段信息,該發(fā)送時間段為接收節(jié)點的第N個空閑時間段。進一步地,上述方法還可具有以下特點所述消息包的發(fā)送時間段信息為時間段的起始時刻,稱為發(fā)送時刻;所迷消息發(fā)送信息包括a)消息隊 列首個消息包的發(fā)送時刻;b)消息發(fā)送時刻表表項總數(shù);c)消息隊列發(fā)送時 刻表,每一表項記錄了消息隊列中一個消息包的發(fā)送時刻。進一步地,上述方法還可具有以下特點所述消息發(fā)送信息中還包括各 個消息包的發(fā)送信道信息;步驟(a)將消息包放入消息隊列時,還按以下方法選擇其發(fā)送信道如不插隊,判斷C-T是否大于等于S,如果沒有,就選擇上一個消息 包所采用的信道,否則就更換為另一個信道;其中,C表示該消息包的發(fā)送 時刻,T表示隊列中上一個不同信道的消息包的發(fā)送時刻,S表示當前選定 或隨機選定的信道切換時間間隔;如插隊,則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對消息隊列的最后 一個消息包,按上述不插隊時的相同方式來選定一個發(fā)送信道;步驟(c)發(fā)送消息包時,先判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當前信道 是否相同,如果不相同,先切換到預(yù)定信道后,再進行后續(xù)發(fā)送步驟。進一步地,上述方法還可具有以下特點步驟(c)在發(fā)送時間段中, 節(jié)點是隨機選擇一個時機發(fā)送所述消息包,如杲發(fā)送成功,需更新本地緩存 的本節(jié)點消息發(fā)送信息中的消息隊列首個消息包的發(fā)送時刻。進一步地,上述方法還可具有以下特點在消息包結(jié)構(gòu)中還包含該消息 包的已經(jīng)過節(jié)點信息;步驟(b)中還將本節(jié)點的相鄰節(jié)點與該消息包緩存的已經(jīng)過節(jié)點進行 比較,對得到的兩個比例值或個數(shù)加權(quán)后再與設(shè)定閾值比較,如未超過設(shè)定 閾值時,符合轉(zhuǎn)發(fā)條件,在消息包中的已經(jīng)過節(jié)點不包括本節(jié)點時,將本節(jié) 點標識添加到該消息包中的已經(jīng)過節(jié)點標識中,執(zhí)行步驟(c)。進一步地,上迷方法還可具有以下特點步驟(B )還判斷消息隊列中是否存在消息標i只和源地址都與收到的消 息包相同的消息包如果存在,在消息包結(jié)構(gòu)中包含該消息包的已經(jīng)過節(jié)點信息時,將該消 息包中的已經(jīng)過節(jié)點標識合并到消息隊列中相同消息包緩存的已經(jīng)過節(jié)點 標識當中,然后丟棄收到的該消息包,否則直接丟棄;如果不存在,執(zhí)行步驟(C)。 進一步地,上述方法還可具有以下特點步驟(C)進行顯示處理時,先按照用戶設(shè)定的過濾規(guī)則檢查消息內(nèi)容, 如可以顯示,則將消息顯示在用戶圖形界面上供用戶瀏覽,否則,不顯示, 結(jié)束。進一步地,上述方法還可具有以下特點步驟(b)如超過設(shè)定閾值,判 斷消息包不符合轉(zhuǎn)發(fā)條件時,和/或步驟(c)發(fā)送失敗時,將所述消息包重 新放入消息隊列的末尾。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動無線自組網(wǎng)的消息廣 播方法,在消息包結(jié)構(gòu)中包含已經(jīng)過節(jié)點的信息,其中消息廣播過程包括以 下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,在前一 消息包發(fā)送完成后,取出消息隊列中最前面的消息包準備發(fā)送;(b) 將本節(jié)點的相鄰節(jié)點與該消息包緩存的已到過節(jié)點進行比較,當 相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,在消息包中的已經(jīng)過節(jié)點不包括 本節(jié)點時,將本節(jié)點標識添加到該消息包中的已經(jīng)過節(jié)點標識中,執(zhí)行下一 步;(c) 將該消息包交驅(qū)動層廣播發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動無線自組網(wǎng)的消息廣播和接收方法,其中消息接收過程包括以下步驟 (A)節(jié)點收到消息包;(B )判斷消息隊列中是否存在消息標識和源地址都與收到的消息包相 同的消息包,如果存在,丟棄收到的該消息包,如果不存在,執(zhí)行步驟(C)。(C)對該消息包進行轉(zhuǎn)發(fā)和顯示處理。進一步地,上述方法還可具有以下特點在消息包結(jié)構(gòu)中還包含該消息 包的已經(jīng)過節(jié)點信息;消息廣播過程包括以下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,在前一 消息包發(fā)送完成后,取出消息隊列中最前面的消息包準備發(fā)送;(b) 將本節(jié)點的相鄰節(jié)點與該消息包緩存的已到過節(jié)點進行比較,當 相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,在消息包中的已經(jīng)過節(jié)點不包括 本節(jié)點時,將本節(jié)點標識添加到該消息包中的已經(jīng)過節(jié)點標識中,執(zhí)行下一 步;(c) 將該消息包交驅(qū)動層廣播發(fā)送;步驟(B)中,如消息隊列中是否存在消息標識和源地址都與收到的消 息包相同的消息包,先將該消息包中的已經(jīng)過節(jié)點標識合并到消息隊列中相 同消息包緩存的已經(jīng)過節(jié)點標識當中,再丟棄收到的該消息包。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動無線自組網(wǎng)的消息廣 播方法,其特征在于,在消息包不符合轉(zhuǎn)發(fā)條件時,將所述消息包重新放入 消息隊列的末尾準備發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動無線自組網(wǎng)的消息廣 播和接收方法,在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點的消息發(fā)送信息, 而在節(jié)點上緩存本節(jié)點和周邊節(jié)點的消息發(fā)送信息,本節(jié)點的消息發(fā)送信息 中包含該節(jié)點消息發(fā)送隊列中各個消息包的發(fā)送時間段信息,周邊節(jié)點的消 息發(fā)送信息中包含相應(yīng)節(jié)點的標識及其消息發(fā)送隊列中各個消息包的發(fā)送 時間段信息;節(jié)點在一個時間段發(fā)送一個消息包,時間段長度對各節(jié)點是統(tǒng) 一設(shè)定的;其中消息廣播過程包括以下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,按以下 方法逸定其發(fā)送時間段,然后更新緩存在本地的本節(jié)點消息發(fā)送信息;如不插隊,查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時間段作為其發(fā)送時間段;如插隊時,插入隊列的消息包占用緊挨其后的消息包的發(fā)送時間段,而 后者占用緊隨其后的消息包的發(fā)送時間段,依此類推,對消息隊列的最后一 個消息包,則重新查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的空閑 時間段作為其發(fā)送時間段;(b) 在前一消息包發(fā)送完成后,取出消息隊列中最前面的消息包;(c) 在預(yù)定的發(fā)送時間段內(nèi)將該消息包交驅(qū)動層廣播隨機發(fā)送; 在消息接收過程包括以下步驟(A)節(jié)點收到消息包;(B )才艮據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點的消息 發(fā)送信息或更新已有的該節(jié)點的消息發(fā)送信息;(C)對該消息包進行轉(zhuǎn)發(fā)和顯示處理。進一步地,上述方法還可具有以下特點在消息包結(jié)構(gòu)中還包含發(fā)送該 消息包的節(jié)點的相鄰節(jié)點信息,包括相鄰節(jié)點的個數(shù)信息和相鄰節(jié)點的標識 信息;步驟(b)更新所述消息包中緩存的相鄰節(jié)點時,是按本地緩存的相鄰 節(jié)點的相鄰節(jié)點個數(shù)的多少按序排列,得到相鄰節(jié)點序列;步驟(B)還根據(jù)消息包中包含的信息,同時更新本地緩存的消息包相 鄰節(jié)點序列當中與接收節(jié)點相鄰的節(jié)點的消息發(fā)送信息,如該節(jié)點是消息包 相鄰節(jié)點序列中相鄰節(jié)點個數(shù)排在第N位的節(jié)點,則在該節(jié)點的消息發(fā)送 信息中添加該消息包的發(fā)送時間段信息,該發(fā)送時間段為接收節(jié)點的第N 個空閑時間段。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動無線自組網(wǎng)的消息廣 播方法,節(jié)點在一個時間段發(fā)送一個消息包,時間段長度對各節(jié)點是統(tǒng)一設(shè)定的,消息包結(jié)構(gòu)中包括備個消息包的發(fā)送信道信息,該方法包括以下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,按以下方法選棒其發(fā)送信道,然后更新緩存的消息隊列中各個消息包的發(fā)送信道信息如不插隊,判斷C-T是否大于等于S,如果沒有,就選擇上一個消息 包所采用的信道,否則就更換為另一個信道;其中,C表示該消息包發(fā)送時 間段的起始時刻,T表示隊列中上一個不同信道的消息包發(fā)送時間段的起始 時刻,S表示當前選定或隨機選定的信道切換時間間隔;如插隊,則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對消息隊列的最后 一個消息包,按上述不插隊時的相同方式來選定一個發(fā)送信道;(b) 在前一消息包發(fā)送完成后,取出消息隊列中最前面的消息包,判 斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當前信道是否相同,如果不相同,先切換到預(yù) 定信道,執(zhí)行下一步,否則直接執(zhí)行下一步;(c) 將該消息包交驅(qū)動層廣纟番發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動無線自組網(wǎng)的消息廣 播方法,包括以下步驟(a)節(jié)點將本地創(chuàng)建的消息包或收到的消息包按以下排序規(guī)則中的一 個或任意組合將消息包放入消息隊列規(guī)則一,將消息分為多個優(yōu)先級,其中原創(chuàng)消息包的優(yōu)先級高于轉(zhuǎn)發(fā)的 消息包,對于同一優(yōu)先級的消息包按照時間順序來決定消息在隊列中的位 置,高優(yōu)先級的消息包可以插入到低優(yōu)先級的消息包前面;規(guī)則二,對于要轉(zhuǎn)發(fā)的消息包,如果隊列中最后N個消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊列 最后N-l個消息包前面。(b)在前一消息包發(fā)送完成后,取出消息隊列中最前面的消息包,包 交驅(qū)動層廣播發(fā)送。進一步地,上述方法還可具有以下特點所述規(guī)則一中,在將高優(yōu)先級 的消息包插入到低優(yōu)先級的消息包前面時,如果兩個高優(yōu)先級的消息包在消 息隊列中的位置相鄰,則至少要間隔一個低優(yōu)先級的消息包。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動無線自組網(wǎng)的終端節(jié) 點,包括應(yīng)用層、驅(qū)動層和硬件層,其特征在于,所述應(yīng)用層進一步包括消息編輯和顯示模塊,用于支持用戶對消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊列處理模塊,進一步包括隊列控制單元,用于將驅(qū)動層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊列,消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點的相鄰節(jié)點信息;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送 消息隊列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點的相鄰節(jié)點與該消息包緩存的相鄰節(jié) 點進行比較,當相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,認為其符合轉(zhuǎn)發(fā) 條件,否則認為其不符合轉(zhuǎn)發(fā)條件;消息包信息更新單元,用于更新符合轉(zhuǎn)發(fā)條件的消息包中的相鄰節(jié)點信 息,然后觸發(fā)發(fā)送控制單元;發(fā)送控制單元,用于將消息包交驅(qū)動層廣播發(fā)送。消息接收模塊,進一步包括周邊節(jié)點信息更新單元,用于根據(jù)驅(qū)動層上傳消息包中的信息,在本地 緩存消息包發(fā)送節(jié)點的相鄰節(jié)點信息或更新已保存的該節(jié)點的相鄰節(jié)點信 息,包括相鄰節(jié)點的個數(shù)及標識信息;消息包傳遞單元,用于將接收的消息包傳遞到消息隊列處理模塊以及消息編輯和顯示;):莫塊;存儲模塊,用于在本地緩存周邊節(jié)點的相鄰節(jié)點信息。進一步地,上述裝置還可具有以下特點所述隊列控制單元按以下排序規(guī)則中的一個或任意組合將消息包放入消息隊列規(guī)則一,將消息分為多個優(yōu)先級,其中原創(chuàng)消息包的優(yōu)先級高于轉(zhuǎn)發(fā)的 消息包,對于同 一優(yōu)先級的消息包按照時間順序來決定消息在隊列中的位 置,高優(yōu)先級的消息包可以插入到低優(yōu)先級的消息包前面;規(guī)則二,對于要轉(zhuǎn)發(fā)的消息包,如果隊列中最后N個消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊列 最后N-l個消息包前面。進一步地,上述裝置還可具有以下特點所迷消息隊列處理模塊還包括時間段選擇單元,用于按以下方法為加入 消息隊列的消息包選定發(fā)送時間段如不插隊,查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時間段作為其發(fā)送時間段;如插隊時,插入隊列的消息包占用緊挨其后的消息包的發(fā)送時間段,而 后者占用緊隨其后的消息包的發(fā)送時間段,依此類推,對消息隊列的最后一 個消息包,則重新查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的空閑 時間段作為其發(fā)送時間段;所述消息隊列處理模塊還包括發(fā)送信息更新單元,用于根據(jù)為消息包選 定的發(fā)送時間段,更新緩存在本地的本節(jié)點消息發(fā)送信息;所述消息隊列處理模塊的發(fā)送調(diào)用單元是在下一個需要發(fā)送消息包的 發(fā)送時間段,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊列最前面的消息包;所述消息轉(zhuǎn)發(fā)模塊的發(fā)送控制單元是在消息包的預(yù)定發(fā)送時間段內(nèi)隨 機地將其交給驅(qū)動層廣播發(fā)送,在一個時間段發(fā)送一個消息包,且時間段長度對各節(jié)點是統(tǒng)一設(shè)定的;所迷消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元還用于根據(jù)本節(jié)點當前的消息發(fā)送信息數(shù)據(jù),更新符合轉(zhuǎn)發(fā)條件的消息包中的消息發(fā)送信息數(shù)據(jù);所述消息接收模塊的周邊節(jié)點信息更新單元還用于根據(jù)消息包中包含 發(fā)送節(jié)點消息隊列中各個消息包發(fā)送時間段信息的消息發(fā)送信息,在本地添加該發(fā)送節(jié)點的消息發(fā)送信息或更新已有的該節(jié)點的消息發(fā)送信息;所述存儲模塊還用于緩存本節(jié)點的消息發(fā)送信息,包含該節(jié)點消息發(fā)送 隊列中各個消息包的發(fā)送時間段信息;以及周邊節(jié)點的消息發(fā)送信息,包含 相應(yīng)節(jié)點的標識及其消息發(fā)送隊列中各個消息包的發(fā)送時間段信息。進一步地,上述裝置還可具有以下特點所述消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元在緩存或更新消息包發(fā)送節(jié) 點的相鄰節(jié)點信息時,是按本地緩存的相鄰節(jié)點的相鄰節(jié)點個數(shù)的多少按序 排列,得到相鄰節(jié)點序列;所述消息隊列處理模塊的發(fā)送信息更新單元還用于根據(jù)為消息包選定 的發(fā)送信道,更新緩存在本地的本節(jié)點消息發(fā)送信息;所述消息接收模塊的周邊節(jié)點信息更新單元還根據(jù)消息包中的消息發(fā) 送信息及相鄰節(jié)點序列,更新本地緩存的消息包相鄰節(jié)點序列中與接收節(jié)點 相鄰的節(jié)點的消息發(fā)送信息,如該節(jié)點是消息包相鄰節(jié)點序列中相鄰節(jié)點個 數(shù)排在第N位的節(jié)點,在該節(jié)點的消息發(fā)送信息中添加該消息包的發(fā)送時 間段信息,該發(fā)送時間段為接收節(jié)點的第N個空閑時間段。進一步地,上述裝置還可具有以下特點所述消息隊列處理模塊還包括信道選擇單元,用于按以下方法為加入消 息隊列的消息包選定發(fā)送信道如不插隊,判斷C-T是否大于等于S,如果沒有,就選擇上一個消息 包所采用的信道,否則就更換為另一個信道;其中,C表示該消息包發(fā)送時 間段的起始時刻,T表示隊列中上一個不同信道的消息包發(fā)送時間段的起始 時刻,S表示當前選定或隨機選定的信道切換時間間隔,時間_敬長度對各節(jié)點是統(tǒng)一i殳定的;如插隊,則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對消息隊列的最后 一個消息包,按上述不插隊時的相同方式來選定一個發(fā)送信道;所述消息轉(zhuǎn)發(fā)模塊還包括信道切換控制單元,用于判斷要轉(zhuǎn)發(fā)消息包預(yù) 定的信道和當前信道是否相同,如不相同,先切換到預(yù)定信道,再觸發(fā)消息 包信息更新單元,否則直接觸發(fā)消息包信息更新單元。進一步地,上述裝置還可具有以下特點所述存儲模塊緩存的本節(jié)點和周邊節(jié)點的消息發(fā)送信息包括a)消息 隊列首個消息包的發(fā)送時刻,發(fā)送時刻指相應(yīng)發(fā)送時間段的起始時刻;b)消 息發(fā)送時刻表表項總數(shù);c)消息隊列發(fā)送時刻表,每一表項記錄了消息隊 列中一個消息包的發(fā)送時刻。所述消息隊列處理模塊的發(fā)送信息更新單元還用于在消息包發(fā)送成功 后,更新本地緩存的本節(jié)點消息發(fā)送信息中的消息隊列首個消息包的發(fā)送時刻。進一步地,上述裝置還可具有以下特點所述消息轉(zhuǎn)發(fā)模塊的轉(zhuǎn)發(fā)條件判斷單元還用于將本節(jié)點的當前相鄰節(jié) 點與要轉(zhuǎn)發(fā)消息包中緩存的已經(jīng)過節(jié)點進行比較,對得到的兩個比例值或個 數(shù)加權(quán)后再與設(shè)定閾值比較,如未超過設(shè)定閾值,則認為該消息包符合轉(zhuǎn)發(fā) 條件,否則i^為其不符合轉(zhuǎn)發(fā)條件;所述消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元還用于更新符合轉(zhuǎn)發(fā)條件的 消息包中的已經(jīng)過節(jié)點信息,即在消息包中的已經(jīng)過節(jié)點不包括本節(jié)點時, 將本節(jié)點標識添加到該消息包中的已經(jīng)過節(jié)點標識中。進一步地,上述裝置還可具有以下特點所述消息接收模塊還包括相同消息包判定處理單元,用于判斷在消息隊 列中是否存在消息標識和源地址都與該消息包相同的消息包如果存在,在消息包結(jié)構(gòu)中包含該消息包的已經(jīng)過節(jié)點信息時,將該消 息包中的已經(jīng)過節(jié)點標識合并到消息隊列中相同消息包緩存的已經(jīng)過節(jié)點標識當中,然后丟棄收到的該消息包,否則直接丟并; 如果不存在,觸發(fā)消息包傳遞單元工作。 進一步地,上述裝置還可具有以下特點所述應(yīng)用層還包括過濾模塊,用于接收消息接收模塊的消息包傳遞單元 傳遞的消息包,根據(jù)用戶設(shè)置的過濾規(guī)則將符合條件的消息傳遞到消息編輯 和顯示模塊進行顯示,如果不符合過濾條件,則不將該消息包傳遞到消息編 輯和顯示模塊。進一步地,上述裝置還可具有以下特點轉(zhuǎn)發(fā)條件判斷單元在判斷消息包不符合轉(zhuǎn)發(fā)條件時,將所述消息包重新 放入消息隊列的末尾;和/或發(fā)送控制單元在發(fā)送失敗時,將所述消息包重新放入消息隊列的末尾。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動無線自組網(wǎng)的終端節(jié) 點,包括應(yīng)用層、驅(qū)動層和硬件層,其特征在于,所述應(yīng)用層進一步包括消息編輯和顯示模塊,用于支持用戶對消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊列處理模塊,進一步包括隊列控制單元,用于將驅(qū)動層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊列,消息包結(jié)構(gòu)中包含已經(jīng)過節(jié)點的信息;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個需要發(fā)送消息 包的發(fā)送時間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點的相鄰節(jié)點與該消息包緩存的已經(jīng)過 節(jié)點進行比較,當相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,認為其符合轉(zhuǎn) 發(fā)條件,否則認為其不符合轉(zhuǎn)發(fā)條件;消息包信息更新單元,用于對符合轉(zhuǎn)發(fā)條件的消息包,在消息包中的已 經(jīng)過節(jié)點不包括本節(jié)點時,將本節(jié)點標識添加到該消息包中的已經(jīng)過節(jié)點標識中;發(fā)送控制單元,用于將消息包交驅(qū)動層廣播發(fā)送;消息接收模塊,用于接收消息包并將其傳遞到消息隊列處理模塊進行轉(zhuǎn) 發(fā),以及傳遞到消息編輯和顯示模塊進行顯示。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動無線自組網(wǎng)的終端節(jié) 點,包括應(yīng)用層、驅(qū)動層和硬件層,其特征在于,所述應(yīng)用層進一步包括消息編輯和顯示模塊,用于支持用戶對消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊列處理模塊,用于將驅(qū)動層獲取的消息包以及用戶創(chuàng)建的消息包 放入消息隊列,在前一消息包發(fā)送完成后,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊列 最前面的消息包;消息轉(zhuǎn)發(fā)模塊,用于將消息包交驅(qū)動層廣播發(fā)送; 消息接收模塊,進一步包括相同消息包判定處理單元,用于判斷在消息隊列中是否存在消息標識和 源地址都與該消息包相同的消息包,如果存在,丟棄收到的該消息包;如果 不存在,觸發(fā)消息包傳遞單元工作;消息包傳遞單元,用于將接收的消息包傳遞到消息隊列處理模塊以及消息編輯和顯示;f莫塊。進一步地,上述裝置還可具有以下特點 所述消息轉(zhuǎn)發(fā)模塊進一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點的當前相鄰節(jié)點與要轉(zhuǎn)發(fā)消息包中緩 存的已經(jīng)過節(jié)點進行比較,得到的比例值或個數(shù)與設(shè)定閾值比較,如未超過 設(shè)定閾值,則認為該消息包符合轉(zhuǎn)發(fā)條件,否則認為其不符合轉(zhuǎn)發(fā)條件;消息包信息更新單元,用于在消息包中的已經(jīng)過節(jié)點不包括本節(jié)點時,將本節(jié)點標識添加到該消息包中的已經(jīng)過節(jié)點標識中;發(fā)送控制單元,用于將消息包交驅(qū)動層廣播發(fā)送;所迷消息接收模塊的相同消息包判定處理單元在判斷出消息隊列中存 在消息標識和源地址都與該消息包相同的消息包時,先將該消息包中的已經(jīng) 過節(jié)點標識合并到消息隊列中相同消息包緩存的已經(jīng)過節(jié)點標識當中,然后 再丟棄該消息包。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動無線自組網(wǎng)的終端節(jié) 點,包括應(yīng)用層、驅(qū)動層和硬件層,其特征在于,所述應(yīng)用層在消息包不符 合轉(zhuǎn)發(fā)條件時,將所迷消息包重新放入消息隊列的末尾準備發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動無線自組網(wǎng)的終端節(jié) 點,包括應(yīng)用層、驅(qū)動層和硬件層,其特征在于,所述應(yīng)用層進一步包括消息編輯和顯示模塊,用于支持用戶對消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊列處理才莫塊,進一步包括隊列控制單元,用于將驅(qū)動層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊列;時間段選擇單元,用于按以下方法為加入消息隊列的消息包選定發(fā)送時 間段如不插隊,查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時間段作為其發(fā)送時間段;如插隊時,插入隊列的消息包占用緊挨其后的消息包的發(fā)送時間段,而 后者占用緊隨其后的消息包的發(fā)送時間段,依此類推,對消息隊列的最后一 個消息包,則重新查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的空閑 時間段作為其發(fā)送時間段;發(fā)送信息更新單元,用于根據(jù)為消息包選定的發(fā)送時間段,更新緩存在 本地的本節(jié)點消息發(fā)送信息;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個需要發(fā)送消息包的發(fā)送時間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進一步包括消息包信息更新單元,用于根據(jù)本節(jié)點當前的消息發(fā)送信息數(shù)據(jù),更新符^^轉(zhuǎn)發(fā)條件的消息包中的消息發(fā)送信息數(shù)據(jù),然后觸發(fā)發(fā)送控制單元;發(fā)送控制單元,用于在消息包的預(yù)定發(fā)送時間段內(nèi)隨機地將其交給驅(qū)動 層廣播發(fā)送,在一個時間段發(fā)送一個消息包,且時間段長度對各節(jié)點是統(tǒng)一 設(shè)定的;消息接收模塊,進一步包括周邊節(jié)點信息更新單元,用于根據(jù)消息包中包舍發(fā)送節(jié)點消息隊列中各 個消息包的發(fā)送時間段信息的消息發(fā)送信息,在本地添加該發(fā)送節(jié)點的消息 發(fā)送信息或更新已有的該節(jié)點的消息發(fā)送信息;消息包傳遞單元,用于將接收的消息包傳遞到消息隊列處理模塊以及消 息編輯和顯示4莫塊;存儲模塊,用于緩存本節(jié)點的消息發(fā)送信息,包含該節(jié)點消息發(fā)送隊列 中各個消息包的發(fā)送時間段信息;以及周邊節(jié)點的消息發(fā)送信息,包含相應(yīng) 節(jié)點的標識及其消息發(fā)送隊列中各個消息包的發(fā)送時間段信息。進一步地,上述裝置還可具有以下特點所述消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元在緩存或更新消息包發(fā)送節(jié) 點的相鄰節(jié)點信息時,是按本地緩存的相鄰節(jié)點的相鄰節(jié)點個數(shù)的多少按序 排列,得到相鄰節(jié)點序列;所述消息隊列處理模塊的發(fā)送信息更新單元還用于根據(jù)為消息包選定 的發(fā)送信道,更新緩存在本地的本節(jié)點消息發(fā)送信息;所述消息接收模塊的周邊節(jié)點信息更新單元還根據(jù)消息包中的消息發(fā) 送信息及相鄰節(jié)點序列,更新本地緩存的消息包相鄰節(jié)點序列中與接收節(jié)點 相鄰的節(jié)點的消息發(fā)送信息,如該節(jié)點是消息包相鄰節(jié)點序列中相鄰節(jié)點個 數(shù)排在第N位的節(jié)點,在該節(jié)點的消息發(fā)送信息中添加該消息包的發(fā)送時 間段信息,該發(fā)送時間段為接收節(jié)點的第N個空閑時間段。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動無線自組網(wǎng)的終端節(jié)點,包栝應(yīng)用層、驅(qū)動層和硬件層,其特征在于,所述應(yīng)用層進一步包括消息編輯和顯示模塊,用于支持用戶對消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊列處理模塊,進一步包括隊列控制單元,用于將驅(qū)動層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊列;信道選擇單元,用于按以下方法為加入消息隊列的消息包選定發(fā)送信道如不插隊,判斷C-T是否大于等于S,如果沒有,就選擇上一個消息 包所采用的信道,否則就更換為另一個信道;其中,C表示該消息包發(fā)送時 間段的起始時刻,T表示隊列中上一個不同信道的消息包發(fā)送時間段的起始 時刻,S表示當前選定或隨機選定的信道切換時間間隔,時間段長度對各節(jié) 點是統(tǒng)一設(shè)定的;如插隊,則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對消息隊列的最后 一個消息包,按上述不插隊時的相同方式來選定一個發(fā)送信道;發(fā)送信息更新單元,用于根據(jù)為消息包選定的發(fā)送信道,更新緩存在本 地的本節(jié)點消息隊列中各個消息包的發(fā)送信道;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個需要發(fā)送消息 包的發(fā)送時間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進一步包括信道切換控制單元,用于判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當前信道是否 相同,如不相同,先切換到預(yù)定信道;發(fā)送控制單元,用于在消息包的預(yù)定發(fā)送時間段內(nèi)將其交給驅(qū)動層廣播 發(fā)送,在一個時間段發(fā)送一個消息包;消息接收模塊,用于接收消息包并將其傳遞到消息隊列處理模塊以及消息編輯和顯示模塊;存儲模塊,用于緩存本節(jié)點消息發(fā)送隊列中各消息包的發(fā)送信道信息。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動無線自組網(wǎng)的終端節(jié) 點,包括應(yīng)用層、驅(qū)動層和硬件層,其特征在于,所述應(yīng)用層進一步包括消息編輯和顯示模塊,用于支持用戶對消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊列處理^lt塊,進一步包括隊列控制單元,用于按以下排序規(guī)則中的一個或任意組合將消息包放入 消息隊列規(guī)則一,將消息分為多個優(yōu)先級,其中原創(chuàng)消息包的優(yōu)先級高于轉(zhuǎn)發(fā)的 消息包,對于同 一優(yōu)先級的消息包按照時間順序來決定消息在隊列中的位 置,高優(yōu)先級的消息包可以插入到低優(yōu)先級的消息包前面;規(guī)則二,對于要轉(zhuǎn)發(fā)的消息包,如果隊列中最后N個消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊列 最后N-l個消息包前面。發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送 消息隊列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,用于將消息包交驅(qū)動層廣播發(fā)送;消息接收模塊,用于接收消息包并將其傳遞到消息隊列處理模塊以及消 息編輯和顯示模塊。應(yīng)注意的是,雖然在實施例中將以上各個方法組合在一起使用,但明顯 示地,這些方法均可以獨立使用,并達到各自的技術(shù)效果。綜上所述,本發(fā)的消息廣播相對于目前學(xué)術(shù)研究的廣播算法有明顯的區(qū) 別,可以選擇到 一個合理的轉(zhuǎn)發(fā)時機以節(jié)約系統(tǒng)帶寬和負載均衡。1)消息包里會緩存一部分節(jié)點地址信息,用來表示此消息曾經(jīng)到過的 節(jié)點(可不區(qū)分到達的先后順序),由接收節(jié)點來更新。當移動節(jié)點準備發(fā)送此消息時需要先對比消息包里緩存的已經(jīng)過節(jié)點地址信息,如果發(fā)現(xiàn)周圍有 很多新的節(jié)點,那么就選擇發(fā)送。如果相鄰節(jié)點中有相當一部分是已經(jīng)過節(jié) 點,就沒有必要此時轉(zhuǎn)發(fā)出去。逸樣,消息將被優(yōu)先轉(zhuǎn)發(fā)到從來沒有與源節(jié) 點相鄰的新的相鄰節(jié)點上,之所以這么考慮是怕產(chǎn)生負載過于不均衡的現(xiàn) 象,使某些節(jié)點耗電量大大增加,同時希望消息能夠被帶到更遠的地方。2) 消息包里還會緩存消息發(fā)送節(jié)點的相鄰節(jié)點地址列表,列表是按消息轉(zhuǎn)發(fā)優(yōu)先權(quán)的順序排列的。接收節(jié)點收到這個消息包之后會根據(jù)自己在相 鄰節(jié)點列表中的位置來決定發(fā)送時刻,這樣沖突的可能性會進一步減少。3) 切換信道,這也是為了減少盲目發(fā)送,因為上一點在進行相鄰節(jié)點 地址比較的時候主要考慮的是同一信道的節(jié)點,如杲通訊信道不同的節(jié)點, 則不是相鄰節(jié)點。移動節(jié)點按照一定的規(guī)律在互不重合的信道上切換,干擾 能夠得到很好的抑制,避免過多的節(jié)點在同一信道上,從而導(dǎo)致網(wǎng)絡(luò)擁塞, 從而提高了 AD-HOC網(wǎng)絡(luò)的容量。4) 根據(jù)本節(jié)點地址在消息包紀錄的相鄰節(jié)點地址的先后順序,選擇發(fā) 送時機并進行休眠,也是為了從應(yīng)用層減少發(fā)送沖突的概率。5) 對要發(fā)送或轉(zhuǎn)發(fā)的消息包劃分優(yōu)先級,原創(chuàng)的消息可以具有較高的 轉(zhuǎn)發(fā)優(yōu)先級,同時插入時不允許兩個高優(yōu)先級的消息包相鄰,能夠平衡別的 節(jié)點的消息,不至于當用戶在不停的創(chuàng)建新消息的時候便攜設(shè)備無法轉(zhuǎn)發(fā)來 自別的節(jié)點的消息。6) 接收消息后能夠合并相同的消息(即源地址和消息ID (標識)都相 同的消息),刷新消息包中的地址緩存表。這樣的目的是為了減少重發(fā)次數(shù) 以節(jié)約無線帶寬,同時也是為了均衡轉(zhuǎn)發(fā),避免大量帶寬被一個節(jié)點所占用。7) 消息轉(zhuǎn)發(fā)的時間段可以根據(jù)本地及周邊節(jié)點消息轉(zhuǎn)發(fā)時刻表結(jié)構(gòu)來 確定的。消息包中會包含有轉(zhuǎn)發(fā)方的消息隊列消息發(fā)送信息表結(jié)構(gòu),當接收 節(jié)點收到消息包之后會取出發(fā)送節(jié)點的消息隊列發(fā)送時刻表并保留下來。當 接收節(jié)點需要轉(zhuǎn)發(fā)消息的時候就可以參考已經(jīng)存于本地的周邊節(jié)點的消息 隊列消息發(fā)送信息表結(jié)構(gòu),并參考消息包里緩存的相鄰節(jié)點的順序找到盡可 能靠前的空閑時間段來轉(zhuǎn)發(fā)消息。8) 在一個發(fā)送時間段內(nèi),消息轉(zhuǎn)發(fā)的時機是隨機的,源節(jié)點將消息傳 送到一個目的節(jié)點之后應(yīng)該休息相應(yīng)時間直到這個時間段結(jié)束,以讓別的節(jié) 點也能夠在這個時間段內(nèi)有機會發(fā)射,因為802.11 MAC的接八機制不具有 公平性,越是搶不到信道的節(jié)點越難發(fā)射消息,所以需要應(yīng)用層來處理這一 問題。這個特點反映在根據(jù)相鄰節(jié)點和消息包里的相鄰節(jié)點數(shù)隨機休眠的處 理上。9) 當消息轉(zhuǎn)發(fā)的條件不滿足,不直接丟棄此條消息,而是將被移動節(jié) 點緩存,以便在將來某個時刻繼續(xù)轉(zhuǎn)發(fā),因為網(wǎng)絡(luò)的節(jié)點隨時隨地在更新, 有可能當移動節(jié)點正想要轉(zhuǎn)發(fā)消息時發(fā)現(xiàn)周圍沒有相鄰節(jié)點或者周圍的相 鄰節(jié)點都已經(jīng)收到過這一條消息。所以緩存下來是希望消息能夠被帶到更多 的移動節(jié)點上,算法處理上是將次消息又放置到消息隊列的末尾。
圖1是帶RTS/CTS的DCF機制工作過程的示意圖。圖2是AdHoc網(wǎng)絡(luò)中多個終端間相互通信的示意圖一。圖3是本發(fā)明實施例系統(tǒng)的結(jié)構(gòu)圖。圖4是本發(fā)明實施例消息廣播的流程圖。圖5是本發(fā)明實施例一次發(fā)送過程的流程圖。圖6是本發(fā)明實施例多個終端間相互通信的示意圖二。圖7是本發(fā)明實施例消息接收和顯示的流程圖。
具體實施方式
本發(fā)明實施例消息廣播和接收系統(tǒng)的結(jié)構(gòu)如圖3所示,該系統(tǒng)可以建立 在帶有WIFI ( Wi-Fi WirelessFidelity:無線保真)等芯片的智能手機上,也 可以建立在其他支持無線自組網(wǎng)通訊的便攜電子設(shè)備上。如圖所示,該系統(tǒng) 從上自下可以分成應(yīng)用層、驅(qū)動層和硬件層,以下將詳細介紹各層中的模塊, 其中涉及到消息包格式的內(nèi)容將在下文中詳細介紹。本系統(tǒng)的核心部分就在應(yīng)用層,其他層次使用工業(yè)界標準的模塊就可以 實現(xiàn)。本實施例的應(yīng)用層進一步包括消息編輯和顯示模塊,即圖形用戶界面系統(tǒng),用于支持用戶對消息的編輯和發(fā)送,以及支持消息的顯示; 消息隊列處理模塊,進一步包括隊列控制單元,用于將驅(qū)動層獲取的消息包以及用戶創(chuàng)建的消息包按照 設(shè)置的排序規(guī)則放入消息隊列。具體的規(guī)則詳見下文中的介紹,這里不再重復(fù)。時間段選擇單元,用于為加入消息隊列的消息包選定發(fā)送時間段,具體 方法見下文中的介紹,這里不再重復(fù)。信道選擇單元,用于為加入消息隊列的消息包選定發(fā)送信道,具體方法 詳見下文中的介紹,這里不再重復(fù)。發(fā)送信息更新單元,用于根據(jù)為消息包選定的發(fā)送時間段和發(fā)送信道, 更新緩存在本地的本節(jié)點消息發(fā)送信息表結(jié)構(gòu)(實施例是以表結(jié)構(gòu)來存放該 消息發(fā)送信息,但本發(fā)明不局限于此)。發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個需要發(fā)送消息 包的發(fā)送時間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊列最前面的消息包。消息轉(zhuǎn)發(fā)模塊,進一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點的當前相鄰節(jié)點與要轉(zhuǎn)發(fā)消息包中緩 存的已經(jīng)過節(jié)點和/或相鄰節(jié)點進行比較,如相同節(jié)點的比例值(可以是兩 個比例值加權(quán)后得到的比例值)或個數(shù)超過設(shè)定閾值,認為不符合轉(zhuǎn)發(fā)條件, 暫緩轉(zhuǎn)發(fā)該消息包并將其放到消息隊列末尾,否則認為符合轉(zhuǎn)發(fā)條件,觸發(fā) 信道切換單元。信道切換控制單元,用于判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當前信道是否 相同,如果不相同,先切換到預(yù)定信道,再觸發(fā)信息更新單元,否則直接觸 發(fā)消息包信息更新單元。消息包信息更新單元,用于更新符合轉(zhuǎn)發(fā)條件的消息包中的相鄰節(jié)點信 息、已到過節(jié)點信息以及消息發(fā)送信息表結(jié)構(gòu),然后觸發(fā)發(fā)送控制單元,具 體方法詳見下文中的介紹,這里不再重復(fù)。發(fā)送控制單元,用于在消息包發(fā)送時間段內(nèi)隨機地將其交驅(qū)動層廣播發(fā)放到消息隊列的末尾,同時此消息包的下一個消息包的發(fā)送時刻可提前到此消息包的發(fā)送時刻;如杲發(fā)送成功,更新本 地緩存的本節(jié)點消息發(fā)送信息表結(jié)構(gòu)中的消息隊列首個消息包的發(fā)送時刻。消息接收模塊,進一步包括周邊節(jié)點信息更新單元,用于根據(jù)驅(qū)動層上傳消息包中的信息,在本地 添加消息包中發(fā)送節(jié)點的消息發(fā)送信息表結(jié)構(gòu)或更新已有的該節(jié)點的消息 發(fā)送信息表結(jié)構(gòu),同時更新消息包相鄰節(jié)點序列當中,與接收節(jié)點相鄰的節(jié) 點的消息發(fā)送信息表結(jié)構(gòu),以及在本地緩存消息包發(fā)送節(jié)點的相鄰節(jié)點信息 或更新已保存的該節(jié)點的相鄰節(jié)點信息,具體方法詳見下文中的介紹。相同消息包判定處理單元,用于判斷在消息隊列中是否存在與該消息包 相同的消息包,如果存在,將該消息包中的已經(jīng)過節(jié)點地址合并到消息隊列 中相同消息包緩存的已經(jīng)過節(jié)點地址當中,丟棄收到的該消息包,如果不存在,觸發(fā)消息包傳遞單元;消息包傳遞單元,用于將接收的消息包傳遞到消息隊列處理模塊進行轉(zhuǎn) 發(fā),以及傳遞到消息過濾模塊。消息過濾模塊,用于根據(jù)用戶設(shè)置的過濾規(guī)則將符合條件的消息傳遞到 消息編輯和顯示模塊,如果不符合過濾條件則不顯示的消息干擾用戶,用戶 只要能夠看到他想要的消息就可以了 。存儲模塊,用于在本地緩存本節(jié)點和周邊節(jié)點的消息發(fā)送信息表結(jié)構(gòu), 周邊節(jié)點的相鄰節(jié)點信息。本節(jié)點的當前相鄰節(jié)點信息可以緩存在驅(qū)動層或 應(yīng)用層。驅(qū)動層包括無線通訊驅(qū)動模塊,用于控制相應(yīng)的硬件模塊將接收到的 消息向應(yīng)用層傳遞,并將應(yīng)用層發(fā)來的消息轉(zhuǎn)發(fā)給無線自組網(wǎng)里的相鄰設(shè)備 節(jié)點,還可完成MAC地址表的更新。硬件層包括無線通訊芯片,是實現(xiàn)消息轉(zhuǎn)發(fā)和接收的物理硬件電路, 經(jīng)常使用的無線自組網(wǎng)通訊硬件模塊包括WIFI(802.1 la/b/g)和藍牙等。本實施例采用的消息包格式包括以下內(nèi)容,應(yīng)說明的是,其中的字節(jié)數(shù)<叉<又為一個示例。幀類型,2字節(jié),讓應(yīng)用軟件識別出來這是無線自組網(wǎng)消息廣播。 消息標識(ID) , 4個字節(jié),消息的唯一標識。 源地址,6個字節(jié),即創(chuàng)建此消息的節(jié)點的地址。 相鄰節(jié)點數(shù),l個字節(jié),指一跳范圍內(nèi)的相鄰的節(jié)點數(shù)。 消息內(nèi)容長度,2個字節(jié),標明消息內(nèi)容的長度。 消息內(nèi)容,0 256,存放在消息內(nèi)容區(qū)。已經(jīng)過節(jié)點地址,0 512,這些地址都是本消息曾經(jīng)到過的節(jié)點的地址, 保存在消息包的地址緩存區(qū)。在該地址緩存區(qū)的起始位置可以存放已經(jīng)過節(jié) 點;也址的個數(shù)。相鄰節(jié)點序列0 256,以地址序列的形式保存在消息包的另一地址緩 存區(qū),相鄰節(jié)點較多的相鄰節(jié)點的地址放在前面。在該地址緩存區(qū)的起始位 置可以存放相鄰節(jié)點地址個數(shù)。本節(jié)點的消息發(fā)送信息表結(jié)構(gòu),在發(fā)送的時候由消息轉(zhuǎn)發(fā)模塊來填寫, 該結(jié)構(gòu)又包括1) 消息隊列首個消息包的發(fā)送時刻8字節(jié),這里指首個消息包發(fā)送 時間段的起始時刻。節(jié)點在一個時間段發(fā)送一個消息包,時間段長度對各節(jié) 點是統(tǒng)一設(shè)定的;應(yīng)當注意的是消息包在發(fā)送時間段中是隨機發(fā)送的,發(fā)送 時刻只是用于標識該發(fā)送時間段,并不一定是消息包真正的發(fā)送時間點。2) 消息發(fā)送時刻表表項總數(shù)lbyte。3) 消息隊列發(fā)送時刻表0~128字節(jié)。每個表項包括兩個字段發(fā)送 時刻和發(fā)送信道。其中的發(fā)送時刻占3byte,發(fā)送信道占l個byte。發(fā)送時 刻表包含了消息隊列各個消息包的發(fā)送時刻,用相對于消息隊列首個消息包 發(fā)送時刻的偏移值表示。偏移值的單位即一個時間段,該時間段的長度在自 組網(wǎng)中所有節(jié)點都是一致的。以上消息發(fā)送信息表結(jié)構(gòu)的幀結(jié)構(gòu)不是唯一的,只要能夠確定發(fā)送隊列 中各個消息包的發(fā)送時刻和信道即可。如可以直接寫入各個消息包的發(fā)送時刻。略去總項數(shù),而以一特寫的符號來標i己表項結(jié)束等等。周邊節(jié)點消息發(fā)送信息表結(jié)構(gòu),用來存放該節(jié)點所知道的別的節(jié)點準備 發(fā)送的消息的發(fā)送時刻。這個表結(jié)構(gòu)比本節(jié)點的多出 一個MAC地址的字段, 即包括如下字段1) MAC地址(6 byte);2) 消息隊列首個消息包的發(fā)送時刻;3) 消息發(fā)送時刻表表項總數(shù);4) 消息隊列發(fā)送時刻表。應(yīng)當注意的是,這里的周邊節(jié)點并非一定為當前的相鄰節(jié)點,也可以是 節(jié)點保存了其信息的以前的相鄰節(jié)點。本地節(jié)點維護上述的表結(jié)構(gòu)來緩存周 邊節(jié)點的消息發(fā)送時刻表,這樣便于將自己消息的發(fā)送時間安排在一個和別 的相鄰節(jié)點不容易沖突的時刻。如此安排有利于進一步減少自組網(wǎng)內(nèi)各個節(jié) 點之間傳遞數(shù)據(jù)引起的碰撞。以上內(nèi)容中的幀類型、消息ID、源地址、消息內(nèi)容長度和消息內(nèi)容是 由創(chuàng)建該消息的節(jié)點(圖形界面模塊)填寫的,在轉(zhuǎn)發(fā)過程中不做處理。而 相鄰節(jié)點數(shù)、緩存地址個數(shù)、已經(jīng)過節(jié)點地址和相鄰節(jié)點地址、本節(jié)點及周 邊節(jié)點的消息發(fā)送信息表結(jié)構(gòu)由發(fā)送該消息包的消息轉(zhuǎn)發(fā)模塊進行填寫或 更新。圖4是消息廣播的流程圖,包括以下步驟步驟IIO,用戶編輯好消息后,圖形界面模塊將編輯好的消息傳遞給消 息隊列處理模塊;或者,消息隊列處理模塊接收到消息接收模塊傳遞來的消 息包;步驟120,根據(jù)排序規(guī)則將消息包放入消息隊列,確定其發(fā)送時間段(用 發(fā)送時刻表示)和發(fā)送信道(以下也稱為消息包預(yù)定的信道),并更新緩存 在本地的本節(jié)點消息發(fā)送信息表結(jié)構(gòu);本實施例將消息分兩個優(yōu)先級原創(chuàng)級和轉(zhuǎn)發(fā)級,原創(chuàng)級即用戶自己創(chuàng) 建的消息,原創(chuàng)級比轉(zhuǎn)發(fā)級高。但該優(yōu)先級的分類僅為一個示例,也可以根 據(jù)內(nèi)容的緊急程度來分優(yōu)先級,分出的類別也不局限亍2秤。在該步將消息包放入消息隊列時遵循如下的排序規(guī)則a) 同一優(yōu)先級的消息包按照時間順序來決定消息在隊列中的位置;b) 高優(yōu)先級的消息包可以插入到低先級的消息包之前,使原創(chuàng)級的消 息包排到盡可能靠前的位置。本實施例在插入時,還規(guī)定(可選)不能讓兩個高優(yōu)先級的消息包在 消息隊列中的位置相鄰,至少要間隔一個低優(yōu)先級的消息包。這樣是為了避 免終端停止轉(zhuǎn)發(fā)消息。如果不存在插隊問題,兩個高優(yōu)先級的消息包是可以 排在一起的。c) 對于要轉(zhuǎn)發(fā)的消息包,如果隊列中最后N個消息包的源地址相同而 新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊列最后N-l個消息包前面。這樣,節(jié)點會優(yōu)先轉(zhuǎn)發(fā)那些來自很少發(fā)送消息的節(jié)點的 消息包。目的是為了均衡轉(zhuǎn)發(fā),避免大量帶寬被一個節(jié)點所占用。在其它實施例中,也可以筒單地采用按時間順序來排隊。或者在采用第 一條規(guī)則的基礎(chǔ)上,不采用第二和第三條規(guī)則,或者采用第二、第三條規(guī)則 中的一種或其它任意組合。在不能插隊時,根據(jù)本地記錄的發(fā)送時刻占用情況(從本節(jié)點和周邊節(jié) 點的消息發(fā)送信息表結(jié)構(gòu)中獲取),將最靠前的空閑時刻作為其發(fā)送時間段 的起始時刻,并為其選擇發(fā)送信道。空閑時刻是指本節(jié)點和周邊節(jié)點的消息 時刻表結(jié)構(gòu)中沒有占用的時間段的起始時刻。在可插隊時,則根據(jù)其插入位置決定其發(fā)送時間段和信道。插入隊列的 消息包會占用緊挨其后的消息包的發(fā)送時刻和信道,而后者也會占用緊隨其 后的消息包的發(fā)送時刻,依此類推,直到消息隊列中最后一個消息包。對最 后一個消息包,重新根據(jù)發(fā)送時間段的占用情況,將最靠前的空閑時刻作為 其發(fā)送時間段的起始時刻。然后更新本節(jié)點的消息發(fā)送信息表結(jié)構(gòu)中的信息。802.11b/g下可以至少設(shè)置三個完全不重疊的信道,如信道1/6/11。如果所有節(jié)點同時使用同一個信道,干擾和碰撞的幾率肯定會非常大,但如菜能 夠充分利用相隔較遠的信道頻鐠不重疊的特性,甚至更多,那么干擾能夠得 到很好的抑止,從而提高了 AD-HOC網(wǎng)絡(luò)的容量。因此本實施例中還進行 信道切換的控制。該步中,不插隊時選擇發(fā)送信道時按照如下的方式進行判斷消息包的 發(fā)送時間段是否要切換信道,即C-T是否大于等于S,如果沒有,就選擇 上一個消息包所采用的信道,否則就更換信道。其中,C表示該消息包的發(fā) 送時刻,T表示隊列中上一個不同信道的消息包的發(fā)送時刻,S表示當前選 定的信道切換時間間隔。S值較佳在一組值或一取值范圍中隨機選取,如 5s,10s,15s, 20s,25s等,通過隨4/L選取可以進一步避免相鄰節(jié)點的切換動作 同步而總是切到同 一信道上。插隊時,發(fā)送信道的選擇和調(diào)整已在上文描述,對于消息隊列中最后一 個消息包,也按以上不插隊時的方式重新選擇一個發(fā)送信道。步驟130,在前一消息包發(fā)送完成后,在下一個需要發(fā)送消息包的發(fā)送 時間段發(fā)送消息隊列最前面的消息包, 一次發(fā)送過程包括以下步驟,如圖5 所示S21,判斷本節(jié)點的當前相鄰節(jié)點中有多少比例的節(jié)點與要轉(zhuǎn)發(fā)的消息 包中緩存的已經(jīng)過節(jié)點和/或相鄰節(jié)點相同,如該比例值超過(可以是大于 或大于等于)設(shè)定的閾值,不符合轉(zhuǎn)發(fā)條件,執(zhí)行步驟S26,否則符合轉(zhuǎn)發(fā) 條件,執(zhí)行步驟S22;同時考慮已經(jīng)過節(jié)點地址和相鄰節(jié)點地址時,可以對兩個比例值加權(quán)后 再與所述閾值比較。閾值可以配置為50%或其它值。該步也可以直接判斷當前相鄰節(jié)點中有多少個數(shù)的節(jié)點與要轉(zhuǎn)發(fā)的消 息包中緩存的已經(jīng)過節(jié)點和/或相鄰節(jié)點相同,如果超過設(shè)定的閾值則執(zhí)行 步驟S26,否則執(zhí)行步驟S22。522, 判斷要轉(zhuǎn)發(fā)的消息包預(yù)定的信道和當前信道是否相同,如果不相 同,切換到預(yù)定信道后再執(zhí)行下一步,否則直接執(zhí)行下一步;523, 更新符合轉(zhuǎn)發(fā)條件的消息包中的相鄰節(jié)點信息和已到過節(jié)點信息;具體地,用本節(jié)點當前的相鄰節(jié)點數(shù)、相鄰節(jié)點地址來更新消息包中相 應(yīng)緩存區(qū)中的數(shù)據(jù),寫入時按當前相鄰節(jié)點的相鄰節(jié)點數(shù)的多少對相鄰節(jié)點 地址排序,相鄰節(jié)點數(shù)多的相鄰節(jié)點的地址排在前面。在該消息包中緩存的 已經(jīng)過節(jié)點不包括本節(jié)點時,應(yīng)將本節(jié)點地址添加到該消息包中的已經(jīng)過節(jié) 點地址中。其中當前的相鄰節(jié)點數(shù)和地址可以從本地的MAC地址表中獲取, 而相鄰節(jié)點的相鄰節(jié)點數(shù)以從該相鄰節(jié)點發(fā)來的最新的 一個消息包中讀取 的信息為準。S24,根據(jù)本節(jié)點當前保存的消息發(fā)送信息表結(jié)構(gòu)的數(shù)據(jù),更新消息包 中本節(jié)點的消息發(fā)送信息表結(jié)構(gòu);以上各步操作在本實施例由消息轉(zhuǎn)發(fā)模塊完成。S25,將該消息包交驅(qū)動層廣播發(fā)送,如果發(fā)送失敗,執(zhí)行步驟S26, 如果發(fā)送成功,執(zhí)行步驟S27;在一個發(fā)送時間段內(nèi),消息發(fā)送的時機是隨機的,源節(jié)點將消息傳送到 一個目的節(jié)點之后休息相應(yīng)時間直到這個時間段結(jié)束,以讓別的節(jié)點也能在 這個時間段內(nèi)有機會發(fā)射,因為802.11 MAC的接入機制不具有公平性,越 是搶不到信道的節(jié)點越難發(fā)射消息,所以需要應(yīng)用層來處理這一問題。時間 段的長度對于每個消息包來說都是一樣的。S26,將該消息包放到消息隊列的末尾,重新尋找一個最靠前的空閑時 刻作為發(fā)送時刻,同時,此消息包的下一個消息包的發(fā)送時刻可提前到此消 息包的發(fā)送時刻,然后馬上重新執(zhí)行S21。S27 ,更新本地緩存的本節(jié)點消息發(fā)送信息表結(jié)構(gòu)中的消息隊列首個消 息包的發(fā)送時刻,結(jié)束;從上述步驟可看出,本實施例在消息轉(zhuǎn)發(fā)的條件不滿足時,不直接丟棄 此條消息,而是將被移動節(jié)點緩存,以便在將來某個時刻繼續(xù)轉(zhuǎn)發(fā),因為網(wǎng) 絡(luò)的節(jié)點隨時隨地在更新,有可能當移動節(jié)點正想要轉(zhuǎn)發(fā)消息時發(fā)現(xiàn)周圍沒有相鄰節(jié)點或者周圍的相鄰節(jié)點都已經(jīng)收到過這一條消息。所以緩存下來是 希望消息能夠被帶到更多的移動節(jié)點上。圖6示出了消息接收和顯示的流程,當用戶參與自組網(wǎng)的便攜設(shè)備接收 到一條消息,從接收到顯示到屏幕上大致要經(jīng)歷如下的步驟步驟210,驅(qū)動層從硬件中獲取消息包,傳遞給應(yīng)用層的消息接收模塊;步驟220,更新本地周邊節(jié)點消息發(fā)送信息表結(jié)構(gòu),包括在本地添加 消息包中發(fā)送節(jié)點的消息發(fā)送信息表結(jié)構(gòu)或更新已有的該節(jié)點的消息發(fā)送 信息表結(jié)構(gòu),同時更新消息包相鄰節(jié)點序列當中,與接收節(jié)點相鄰的節(jié)點的 消息發(fā)送信息表結(jié)構(gòu);先根據(jù)發(fā)送節(jié)點的地址查找本地緩存的周邊節(jié)點消息發(fā)送信息表結(jié)構(gòu), 如果找到發(fā)送節(jié)點的記錄,根據(jù)消息包中緩存的消息發(fā)送信息表結(jié)構(gòu)更新到 相應(yīng)的表項當中;如果沒有找到且緩存中有足夠的空間,則在該緩存中創(chuàng)建 新的表結(jié)構(gòu)。在緩存已滿時, 一般會刪除周邊節(jié)點中的非相鄰節(jié)點的表結(jié)構(gòu), 讓出空間來保留當前相鄰節(jié)點的表結(jié)構(gòu)。消息接收模塊接收到消息包之后還會根據(jù)消息包中的相鄰節(jié)點及其先 后順序來更新存在本地的周邊節(jié)點消息發(fā)送信息表結(jié)構(gòu)。如果某個節(jié)點同時 屬于本節(jié)點相鄰節(jié)點和消息包中相鄰節(jié)點序列中的節(jié)點,且該節(jié)點是消息包 中相鄰節(jié)點序列中排在第N位的節(jié)點,則在周邊節(jié)點消息發(fā)送信息表結(jié)構(gòu) 該節(jié)點的表結(jié)構(gòu)中添加該消息包的發(fā)送時刻,該發(fā)送時刻為接收節(jié)點的第N 個空閑時刻。例如,如該節(jié)點為消息包中相鄰節(jié)點序列中排在最前面的節(jié)點, 則將轉(zhuǎn)發(fā)此消息的時刻安排最靠前的空閑時刻上。步驟230,才艮據(jù)消息包中的相鄰節(jié)點信息(相鄰節(jié)點數(shù)及地址),在本 地緩存消息包發(fā)送節(jié)點的相鄰節(jié)點信息或更新已保存的該節(jié)點的相鄰節(jié)點 信息;在移動節(jié)點的MAC表中,相鄰節(jié)點是在不斷刷新的,消息接收沖莫塊保 存的該節(jié)點地址及其相鄰節(jié)點數(shù)在相鄰節(jié)點刪除后,可以繼續(xù)保留。因為過 一段時間該節(jié)點仍可能變?yōu)橄噜徑Y(jié)果,保存的相鄰節(jié)點數(shù)仍可作為消息包中36相鄰節(jié)點地址排序的參考。步驟240,判斷該消息包是否已在消息隊列中,如杲是,執(zhí)著步驟250, 否則,執(zhí)行步驟260;消息接收模塊是通過消息包中的消息ID和源地址來判斷消息包是否已 經(jīng)在消息隊列當中,該兩者相同則屬于同 一 消息包。步驟250,將該消息包中的已經(jīng)過節(jié)點地址合并到消息隊列中相同消息 包緩存的已經(jīng)過節(jié)點地址當中,丟棄收到的該消息包,結(jié)束;上述"合并"的含義是取兩者的并集,緩存的已經(jīng)過節(jié)點地址不區(qū)分到 達的先后順序。步驟260,將該消息包傳遞到消息隊列處理模塊進行轉(zhuǎn)發(fā),并傳遞到消 息過濾一莫塊;步驟270,按照用戶設(shè)定的過濾規(guī)則檢查消息內(nèi)容,如可以顯示,則將 消息顯示在用戶圖形界面上供用戶瀏覽,否則,不顯示,結(jié)束。在以上實施例的基礎(chǔ)上,本發(fā)明還有許多的變換方式首先,在其它的實施例中,對于上述提到的選擇一個合理的轉(zhuǎn)發(fā)時機以 節(jié)約系統(tǒng)帶寬的4種處理方式,以及為實現(xiàn)負栽均衡采用的2種處理方式。 可以只采用其中的一種,或者任意多種的組合。和現(xiàn)有技術(shù)相比均具有實質(zhì) 性的特點和技術(shù)效果,均可達到本發(fā)明的基本目的。另一點要說明的是,以上的模塊劃分是邏輯上的,并不局限于某一種固 定的劃分方式,特別在方法中,雖然上述流程提到了相應(yīng)的模塊,但也完全 可以忽略某種固定劃分出來的模塊,只要能完成相應(yīng)的操作即可。在另一實施例中,對于發(fā)送時機的選擇以及休眠時間,可以采用另一種 處理方式,即將本節(jié)點的相鄰節(jié)點數(shù)和發(fā)送該消息包的相鄰節(jié)點的相鄰節(jié)點 數(shù)相加,假定和為P,消息轉(zhuǎn)發(fā)模塊從1 P中隨機選擇一個值N,在從當前 時間單位起的第N個時間單位發(fā)送該消息包,發(fā)送完后再休眠P-N個時間 單位。這種方式也可以在一定程度上減少沖突的概率。和實施例中的方式相 比,不需要在消息包中保存相鄰節(jié)點地址,也不需要由消息接收模塊從消息包中提取和保存其相鄰節(jié)點數(shù)的信息來對相鄰節(jié)點進行排序,而只需要根據(jù) 要轉(zhuǎn)發(fā)消息包中原有的相鄰節(jié)點數(shù)進行計算即可。此外,本發(fā)明方法不局限于采用何種底層協(xié)議,對于其他物理標準的Ad Hoc網(wǎng)絡(luò),比如HomeRF/Bluetooth/Zigbee,本發(fā)明也可以適用。
權(quán)利要求
1. 一種移動無線自組網(wǎng)的消息廣播和接收方法,在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點的相鄰節(jié)點信息,其中消息廣播過程包括以下步驟(a)節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,在前一消息包發(fā)送完成后,取出消息隊列中最前面的消息包準備發(fā)送;(b)將本節(jié)點的相鄰節(jié)點與該消息包緩存的相鄰節(jié)點進行比較,當相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,更新該消息包中緩存的相鄰節(jié)點信息,執(zhí)行下一步;(c)將該消息包交驅(qū)動層廣播發(fā)送;在消息接收過程包括以下步驟(A)節(jié)點收到消息包;(B)根據(jù)該消息包中的相鄰節(jié)點信息,在本地緩存消息包發(fā)送節(jié)點的相鄰節(jié)點信息或更新已保存的該節(jié)點的相鄰節(jié)點信息;(C)對該消息包進行轉(zhuǎn)發(fā)和顯示處理。
2、 如權(quán)利要求1所述的方法,其特征在于在消息包結(jié)構(gòu)中還包含發(fā)送該消息包的節(jié)點的消息發(fā)送信息,而在節(jié)點 上緩存本節(jié)點和周邊節(jié)點的消息發(fā)送信息,本節(jié)點的消息發(fā)送信息中包含該節(jié)點消息發(fā)送隊列中各個消息包的發(fā)送時間段信息,周邊節(jié)點的消息發(fā)送信 息中包含相應(yīng)節(jié)點的標識及其消息發(fā)送隊列中各個消息包的發(fā)送時間段信 息;節(jié)點在一個時間段發(fā)送一個消息包,時間段長度對各節(jié)點是統(tǒng)一設(shè)定的;步驟(a)將消息包放入消息隊列時,按以下方法選定其發(fā)送時間段, 然后更新緩存在本地的本節(jié)點消息發(fā)送信息;如不插隊,查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時間段作為其發(fā)送時間段;如插隊時,插入隊列的消息包占用緊挨其后的消息包的發(fā)送時間段,而 后者占用緊隨其后的消息包的發(fā)送時間段,依此類推,對消息隊列的最后一個消息包,則重新查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的空閑時間段作為其發(fā)送時間段;步驟(c)中是在預(yù)定的發(fā)送時間段內(nèi)將該消息包交驅(qū)動層廣播發(fā)送;步驟(B)還根據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點的消息發(fā)送信息或更新已有的該節(jié)點的消息發(fā)送信息。
3、 如權(quán)利要求4所述的方法,其特征在于所述相鄰節(jié)點信息包括相鄰節(jié)點的個數(shù)信息和相鄰節(jié)點的標識信息;步驟(b)更新該消息包中緩存的相鄰節(jié)點時,是按本地緩存的相鄰節(jié) 點的相鄰節(jié)點個數(shù)的多少4姿序排列,得到相鄰節(jié)點序列;步驟(B)還根據(jù)消息包中包含的信息,同時更新本地緩存的消息包相 鄰節(jié)點序列當中與接收節(jié)點相鄰的節(jié)點的消息發(fā)送信息,如該節(jié)點是消息包 相鄰節(jié)點序列中相鄰節(jié)點個數(shù)排在第N位的節(jié)點,則在該節(jié)點的消息發(fā)送 信息中添加該消息包的發(fā)送時間段信息,該發(fā)送時間段為接收節(jié)點的第N 個空閑時間段。
4、 如權(quán)利要求4所述的方法,其特征在于所述消息包的發(fā)送時間段信息為時間段的起始時刻,稱為發(fā)送時刻;所 述消息發(fā)送信息包括a)消息隊列首個消息包的發(fā)送時刻;b)消息發(fā)送時刻 表表項總數(shù);c)消息隊列發(fā)送時刻表,每一表項記錄了消息隊列中一個消 息包的發(fā)送時刻。
5、 如權(quán)利要求4所述的方法,其特征在于所述消息發(fā)送信息中還包括各個消息包的發(fā)送信道信息;步驟(a)將消息包放入消息隊列時,還按以下方法選擇其發(fā)送信道如不插隊,判斷C-T是否大于等于S,如果沒有,就選擇上一個消息 包所采用的信道,否則就更換為另一個信道;其中,C表示該消息包的發(fā)送 時刻,T表示隊列中上一個不同信道的消息包的發(fā)送時刻,S表示當前選定 或隨機選定的信道切換時間間隔;如插隊,則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對消息隊列的最后一個消息包,按上述不插隊時的相同方式來選定一個發(fā)送信道;步驟(c)發(fā)送消息包時,先判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當前信道 是否相同,如果不相同,先切換到預(yù)定信道后,再進行后續(xù)發(fā)送步驟。
6、 如權(quán)利要求l所述的方法,其特征在于步驟(c)在發(fā)送時間段中,節(jié)點是隨機選擇一個時機發(fā)送所述消息包, 如果發(fā)送成功,需更新本地緩存的本節(jié)點消息發(fā)送信息中的消息隊列首個消 息包的發(fā)送時刻。
7、 如權(quán)利要求1所述的方法,其特征在于在消息包結(jié)構(gòu)中還包含該消息包的已經(jīng)過節(jié)點信息;步驟(b)中還將本節(jié)點的相鄰節(jié)點與該消息包緩存的已經(jīng)過節(jié)點進行 比較,對得到的兩個比例值或個數(shù)加權(quán)后再與設(shè)定閾值比較,如未超過設(shè)定 閾值時,符合轉(zhuǎn)發(fā)條件,在消息包中的已經(jīng)過節(jié)點不包括本節(jié)點時,將本節(jié) 點標識添加到該消息包中的已經(jīng)過節(jié)點標識中,執(zhí)行步驟(c)。
8、 如權(quán)利要求l所述的方法,其特征在于步驟(B )還判斷消息隊列中是否存在消息標識和源地址都與收到的消 息 包相同的消息包如果存在,在消息包結(jié)構(gòu)中包含該消息包的已經(jīng)過節(jié)點信息時,將該消 息包中的已經(jīng)過節(jié)點標識合并到消息隊列中相同消息包緩存的已經(jīng)過節(jié)點 標識當中,然后丟棄收到的該消息包,否則直接丟棄;如果不存在,執(zhí)行步驟(C)。
9、 如權(quán)利要求1或7所述的方法,其特征在于步驟(b)如超過設(shè)定閾值,判斷消息包不符合轉(zhuǎn)發(fā)條件時,和/或步驟(c ) 發(fā)送失敗時,將所述消息包重新放入消息隊列的末尾。
10、 一種移動無線自組網(wǎng)的消息廣播方法,在消息包結(jié)構(gòu)中包含已經(jīng)過 節(jié)點的信息,其中消息廣播過程包括以下步驟(a)節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,在前一消息包發(fā)送完成后,取出消息隊列中最前面的消息包準備發(fā)送;(b) 將本節(jié)點的相鄰節(jié)點與該消息包緩存的已到過節(jié)點進行比較,當 相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,在消息包中的已經(jīng)過節(jié)點不包括 本節(jié)點時,將本節(jié)點標識添加到該消息包中的已經(jīng)過節(jié)點標識中,執(zhí)行下一步;(c) 將該消息包交驅(qū)動層廣播發(fā)送。
11、 一種移動無線自組網(wǎng)的消息廣播和接收方法,其中消息接收過程包才舌以下步驟(A)節(jié)點收到消息包;(B )判斷消息隊列中是否存在消息標識和源地址都與收到的消息包相 同的消息包,如果存在,丟棄收到的該消息包,如果不存在,執(zhí)行步驟(C)。(C)對該消息包進行轉(zhuǎn)發(fā)和顯示處理。
12、 如權(quán)利要求ll的方法,其特征在于在消息包結(jié)構(gòu)中還包含該消息包的已經(jīng)過節(jié)點信息;消息廣播過程包括 以下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,在前一 消息包發(fā)送完成后,取出消息隊列中最前面的消息包準備發(fā)送;(b) 將本節(jié)點的相鄰節(jié)點與該消息包緩存的已到過節(jié)點進行比較,當 相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,在消息包中的已經(jīng)過節(jié)點不包括 本節(jié)點時,將本節(jié)點標識添加到該消息包中的已經(jīng)過節(jié)點標識中,執(zhí)行下一 步;(c) 將該消息包交驅(qū)動層廣播發(fā)送;步驟(B)中,如消息隊列中是否存在消息標識和源地址都與收到的消 息包相同的消息包,先將該消息包中的已經(jīng)過節(jié)點標識合并到消息隊列中相 同消息包緩存的已經(jīng)過節(jié)點標識當中,再丟棄收到的該消息包。
13、 一種移動無線自組網(wǎng)的消息廣^"方法,其特征在于,在消息包不符 合轉(zhuǎn)發(fā)條件時,將所述消息包重新放入消息隊列的末尾準備發(fā)送。
14、 一種移動無線自組網(wǎng)的消息廣4番和接收方法,在消息包結(jié)構(gòu)中包含 發(fā)送該消息包的節(jié)點的消息發(fā)送信息,而在節(jié)點上緩存本節(jié)點和周邊節(jié)點的 消息發(fā)送信息,本節(jié)點的消息發(fā)送信息中包食該節(jié)點消息發(fā)送隊列中備個消 息包的發(fā)送時間段信息,周邊節(jié)點的消息發(fā)送信息中包含相應(yīng)節(jié)點的標識及 其消息發(fā)送隊列中各個消息包的發(fā)送時間段信息;節(jié)點在一個時間段發(fā)送一 個消息包,時間段長度對各節(jié)點是統(tǒng)一設(shè)定的;其中消息廣纟番過程包括以下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,按以下 方法選定其發(fā)送時間段,然后更新緩存在本地的本節(jié)點消息發(fā)送信息;如不插隊,查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時間段作為其發(fā)送時間段;如插隊時,插入隊列的消息包占用緊挨其后的消息包的發(fā)送時間段,而 后者占用緊隨其后的消息包的發(fā)送時間段,依此類推,對消息隊列的最后一 個消息包,則重新查找本節(jié)點和周邊節(jié)點的消息發(fā)送信息,將最靠前的空閑 時間段作為其發(fā)送時間段;(b) 在前一消息包發(fā)送完成后,取出消息隊列中最前面的消息包;(c) 在預(yù)定的發(fā)送時間段內(nèi)將該消息包交驅(qū)動層廣播隨機發(fā)送; 在消息接收過程包^"以下步驟(A)節(jié)點收到消息包;(B )根據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點的消息 發(fā)送信息或更新已有的該節(jié)點的消息發(fā)送信息;(C)對該消息包進行轉(zhuǎn)發(fā)和顯示處理。
15、 如權(quán)利要求14所述的方法,其特征在于在消息包結(jié)構(gòu)中還包含發(fā)送該消息包的節(jié)點的相鄰節(jié)點信息,包括相鄰 節(jié)點的個數(shù)信息和相鄰節(jié)點的標識信息;步驟(b)更新所述消息包中緩存的相鄰節(jié)點時,是按本地緩存的相鄰 節(jié)點的相鄰節(jié)點個數(shù)的多少按序排列,得到相鄰節(jié)點序列;步驟(B)還根據(jù)消息包中包含的信息,同時更新本地緩存的消息包相 鄰節(jié)點序列當中與接收節(jié)點相鄰的節(jié)點的消息發(fā)送信息,如該節(jié)點是消息包 相鄰節(jié)點序列中相鄰節(jié)點個數(shù)排在第N位的節(jié)點,則在該節(jié)點的消息發(fā)送 信息中添加該消息包的發(fā)送時間段信息,該發(fā)送時間段為接收節(jié)點的第N 個空閑時間l殳。
16、 一種移動無線自組網(wǎng)的消息廣播方法,節(jié)點在一個時間段發(fā)送一個 消息包,時間段長度對各節(jié)點是統(tǒng)一設(shè)定的,消息包結(jié)構(gòu)中包括各個消息包 的發(fā)送信道信息,該方法包括以下步驟(a) 節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,按以下方法選擇其發(fā)送信道,然后更新緩存的消息隊列中各個消息包的發(fā)送信道信 臺 如不插隊,判斷C-T是否大于等于S,如果沒有,就選擇上一個消息 包所采用的信道,否則就更換為另一個信道;其中,C表示該消息包發(fā)送時 間段的起始時刻,T表示隊列中上一個不同信道的消息包發(fā)送時間段的起始 時刻,S表示當前選定或隨機選定的信道切換時間間隔;如插隊,則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對消息隊列的最后 一個消息包,按上述不插隊時的相同方式來選定一個發(fā)送信道;(b) 在前一消息包發(fā)送完成后,取出消息隊列中最前面的消息包,判 斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當前信道是否相同,如果不相同,先切換到預(yù) 定信道,執(zhí)行下一步,否則直接執(zhí)行下一步;(c) 將該消息包交驅(qū)動層廣播發(fā)送。
全文摘要
一種移動無線自組網(wǎng)消息廣播和接收的方法及所用終端節(jié)點,在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點的相鄰節(jié)點信息,廣播時,節(jié)點將本地創(chuàng)建的消息包或收到的消息包放入消息隊列,取出最前面的消息包準備發(fā)送;將本節(jié)點的相鄰節(jié)點與該消息包緩存的相鄰節(jié)點進行比較,當相同節(jié)點的比例或個數(shù)未超過設(shè)定閾值時,更新該消息包中緩存的相鄰節(jié)點信息,將該消息包交驅(qū)動層廣播發(fā)送;節(jié)點收到消息包后,根據(jù)包中的相鄰節(jié)點信息在本地緩存消息包發(fā)送節(jié)點的相鄰節(jié)點信息或更新已保存的該節(jié)點的相鄰節(jié)點信息;對該消息包進行轉(zhuǎn)發(fā)和顯示處理。本發(fā)明可以將用戶的消息傳達到移動無線自組網(wǎng)中所有的終端,并盡量避免發(fā)送沖突和廣播風暴。
文檔編號H04Q7/22GK101242564SQ200710063588
公開日2008年8月13日 申請日期2007年2月5日 優(yōu)先權(quán)日2007年2月5日
發(fā)明者蕊 田 申請人:蕊 田