欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

移動(dòng)無(wú)線自組網(wǎng)消息廣播和接收的方法及所用終端節(jié)點(diǎn)的制作方法

文檔序號(hào):7647281閱讀:210來源:國(guó)知局
專利名稱:移動(dòng)無(wú)線自組網(wǎng)消息廣播和接收的方法及所用終端節(jié)點(diǎn)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及移動(dòng)無(wú)線自組網(wǎng),特別是指該網(wǎng)絡(luò)中消息廣播和接收的方法 和系統(tǒng)。
背景技術(shù)
Ad-Hoc網(wǎng)絡(luò)是一種無(wú)線自組網(wǎng)絡(luò),即由一組帶有無(wú)線收發(fā)裝置的移動(dòng) 終端(也稱為節(jié)點(diǎn)或終端節(jié)點(diǎn))組成的一個(gè)多跳臨時(shí)性系統(tǒng)。系統(tǒng)中,節(jié)點(diǎn) 可以自由移動(dòng),形成任意的拓樸結(jié)構(gòu)。Ad-Hoc網(wǎng)絡(luò)中,每個(gè)移動(dòng)終端作為 主機(jī)運(yùn)行面向用戶的應(yīng)用程序;同時(shí)作為路由器,運(yùn)行相應(yīng)的路由協(xié)議,根 據(jù)路由策略和路由表參與分組轉(zhuǎn)發(fā)和路由維護(hù)工作。在Adhoc網(wǎng)絡(luò)中,兩 個(gè)相鄰的終端可以進(jìn)行直接的"端到端"通信;由于終端的無(wú)線傳輸范圍有 限,兩個(gè)無(wú)法直接通信的終端節(jié)點(diǎn)往往要通過多個(gè)中間節(jié)點(diǎn)的轉(zhuǎn)發(fā)來實(shí)現(xiàn)通 信。其應(yīng)用范圍可以覆蓋工業(yè),商業(yè),醫(yī)療,家庭,辦公環(huán)境,軍事等各種 場(chǎng)合。IEEE 802.11標(biāo)準(zhǔn)(以下簡(jiǎn)稱標(biāo)準(zhǔn))定義了兩種組網(wǎng)結(jié)構(gòu)獨(dú)立基本服 務(wù)組IBSS (Individual Basic Service Set)和擴(kuò)展服務(wù)組ESS。其中的獨(dú)立基 本服務(wù)組是一種Ad Hoc組網(wǎng)形式。此外,還有其他物理標(biāo)準(zhǔn)的Ad Hoc網(wǎng) 絡(luò),比如HomeRF/Bluetooth/Zigbee。IBSS(AD-HOC)中的節(jié)點(diǎn)(或稱站點(diǎn))必須以DCF方式訪問信道,DCF 是一種竟?fàn)幨焦蚕硇诺兰夹g(shù),基于CSMA/CA(CSMA/Collision Avoidance載 波監(jiān)聽多址接入/碰撞避免)協(xié)議,采用沖突避免機(jī)制盡量減小沖突碰撞發(fā) 生的概率。為了避免隱藏節(jié)點(diǎn)的影響,802.11 MAC中規(guī)定了 RTS,CTS,ACK 等類型的控制幀,圖1所示為帶RTS/CTS的DCF機(jī)制工作過程。當(dāng)發(fā)射端 希望發(fā)送數(shù)據(jù)時(shí),首先檢測(cè)介質(zhì)是否空閑,若是介質(zhì)為空閑時(shí),送出RTS (Request To Send請(qǐng)求發(fā)送),RTS信號(hào)包括發(fā)射端的地址、接收端的地址、下一筆數(shù)據(jù)將持續(xù)發(fā)送的時(shí)間等信息,接收端收到RTS信號(hào)后,將響應(yīng)短 信號(hào)CTS(ClearToSend),當(dāng)發(fā)射端收到CTS包后,隨即開始發(fā)送數(shù)據(jù)包, 接收端收到數(shù)據(jù)包后,若是CRC檢驗(yàn)正確,接收端將響應(yīng)ACK包。雖然現(xiàn)在Ad Hoc的研究很熱門,但決定一種技術(shù)能否大規(guī)模商用的重 要因素是由市場(chǎng)決定的。從經(jīng)濟(jì)方面看,Ad Hoc網(wǎng)絡(luò)需要解決的主要問題 是尋找一些使它能夠從學(xué)術(shù)圈走向市場(chǎng)的重量級(jí)應(yīng)用。本發(fā)明所關(guān)注的就是 這些重量級(jí)應(yīng)用當(dāng)中的一種移動(dòng)無(wú)線自組網(wǎng)消息廣播器,該移動(dòng)無(wú)線自組 網(wǎng)是人們拿著具有無(wú)線局域網(wǎng)模塊的電子設(shè)備自由組合而成的網(wǎng)絡(luò),可以發(fā) 生在任何特定區(qū)域,消息廣播器的功能是將用戶的需求盡可能的傳達(dá)到特定 區(qū)域內(nèi)所有嵌有無(wú)線自組網(wǎng)通訊硬件模塊的PDA或者智能手機(jī)等終端上。在AdHoc網(wǎng)絡(luò)中,移動(dòng)終端發(fā)送數(shù)據(jù)是隨機(jī)的,很可能會(huì)出現(xiàn)很多終 端同時(shí)發(fā)送大量數(shù)據(jù)的情況,而發(fā)送數(shù)據(jù)的移動(dòng)終端又可能是許多其他終端 傳遞數(shù)據(jù)的中繼或數(shù)據(jù)接收節(jié)點(diǎn)。因此,可能會(huì)出現(xiàn)以下幾種情況1) 引發(fā)廣播風(fēng)暴以圖2所示的組網(wǎng)為例,終端A將消息發(fā)送到其無(wú)線傳輸范圍內(nèi)的終 端B、 C和D之后,終端C和D又會(huì)將該消息發(fā)送到終端B。這樣, 一個(gè) 節(jié)點(diǎn)多次收到同 一條內(nèi)容相同的消息,從而引發(fā)廣播風(fēng)暴。2) 發(fā)送沖突由于隱藏節(jié)點(diǎn)的影響,很有可能某一個(gè)終端在不停地發(fā)送消息,導(dǎo)致別 的節(jié)點(diǎn)無(wú)法正確的接收到消息。另外,多個(gè)相鄰節(jié)點(diǎn)都想在某一時(shí)刻發(fā)送數(shù)據(jù),導(dǎo)致無(wú)線介質(zhì)的竟?fàn)幖?居'L目前業(yè)界的一些無(wú)線介質(zhì)竟?fàn)帢?biāo)準(zhǔn)常常會(huì)導(dǎo)致某些節(jié)點(diǎn)總會(huì)搶到大量的 帶寬,從而導(dǎo)致節(jié)點(diǎn)之間發(fā)送數(shù)據(jù)的幾率不平衡。3) 如果終端A —直在轉(zhuǎn)發(fā)別人的消息,也會(huì)使得終端A沒有時(shí)間來發(fā) 送其用戶編輯的消息。發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種移動(dòng)無(wú)線自組網(wǎng)消息廣播、接收方 法及其系統(tǒng),可以將用戶的消息傳達(dá)到移動(dòng)無(wú)線自組網(wǎng)中所有的終端,并盡 量避免發(fā)送沖突和廣播風(fēng)暴。為了解決上述技術(shù)問題,本發(fā)明提供了 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣播 和接收方法,在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息,其中消息廣播過程包括以下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,在前一 消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包準(zhǔn)備發(fā)送;(b) 將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的相鄰節(jié)點(diǎn)進(jìn)行比較,當(dāng)相 同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),更新該消息包中緩存的相鄰節(jié)點(diǎn)信 息,執(zhí)行下一步;(c) 將該消息包交驅(qū)動(dòng)層廣播發(fā)送; 在消息接收過程包括以下步驟(A)節(jié)點(diǎn)收到消息包;(B )才艮據(jù)該消息包中的相鄰節(jié)點(diǎn)信息,在本地緩存消息包發(fā)送節(jié)點(diǎn)的 相鄰節(jié)點(diǎn)信息或更新已保存的該節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息;(C)對(duì)該消息包進(jìn)行轉(zhuǎn)發(fā)和顯示處理。進(jìn)一步地,上述方法還可具有以下特點(diǎn)步驟(a)按以下排序規(guī)則中 的 一個(gè)或任意組合將消息包放入消息隊(duì)列規(guī)則一,將消息分為多個(gè)優(yōu)先級(jí),其中原創(chuàng)消息包的優(yōu)先級(jí)高于轉(zhuǎn)發(fā)的 消息包,對(duì)于同 一優(yōu)先級(jí)的消息包按照時(shí)間順序來決定消息在隊(duì)列中的位 置,高優(yōu)先級(jí)的消息包可以插入到低優(yōu)先級(jí)的消息包前面;規(guī)則二,對(duì)于要轉(zhuǎn)發(fā)的消息包,如果隊(duì)列中最后N個(gè)消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊(duì)列 最后N-l個(gè)消息包前面。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所迷規(guī)則一中,在將高優(yōu)先級(jí)的消息包插入到低優(yōu)先級(jí)的消息包前面時(shí),如果兩個(gè)高優(yōu)先級(jí)的消息包在消 息隊(duì)列中的位置相鄰,則至少要間隔一個(gè)低優(yōu)先級(jí)的消息包。進(jìn)一步地,上迷方法還可具有以下特點(diǎn)在消息包結(jié)構(gòu)中還包含發(fā)送該消息包的節(jié)點(diǎn)的消息發(fā)送信息,而在節(jié)點(diǎn) 上緩存本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,本節(jié)點(diǎn)的消息發(fā)送信息中包含該節(jié)點(diǎn)消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信息,周邊節(jié)點(diǎn)的消息發(fā)送信 息中包含相應(yīng)節(jié)點(diǎn)的標(biāo)識(shí)及其消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信 息;節(jié)點(diǎn)在一個(gè)時(shí)間段發(fā)送一個(gè)消息包,時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一設(shè)定的;步驟(a)將消息包放入消息隊(duì)列時(shí),按以下方法選定其發(fā)送時(shí)間段, 然后更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息;如不插隊(duì),查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時(shí)間段作為其發(fā)送時(shí)間段;如插隊(duì)時(shí),插入隊(duì)列的消息包占用緊挨其后的消息包的發(fā)送時(shí)間段,而 后者占用緊隨其后的消息包的發(fā)送時(shí)間段,依此類推,對(duì)消息隊(duì)列的最后一 個(gè)消息包,則重新查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的空閑 時(shí)間段作為其發(fā)送時(shí)間段;步驟(c)中是在預(yù)定的發(fā)送時(shí)間段內(nèi)將該消息包交驅(qū)動(dòng)層廣播發(fā)送;步驟(B)還根據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點(diǎn) 的消息發(fā)送信息或更新已有的該節(jié)點(diǎn)的消息發(fā)送信息。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述相鄰節(jié)點(diǎn)信息包括相鄰節(jié) 點(diǎn)的個(gè)數(shù)信息和相鄰節(jié)點(diǎn)的標(biāo)識(shí)信息;步驟(b)更新該消息包中緩存的相鄰節(jié)點(diǎn)時(shí),是按本地緩存的相鄰節(jié) 點(diǎn)的相鄰節(jié)點(diǎn)個(gè)數(shù)的多少按序排列,得到相鄰節(jié)點(diǎn)序列;步驟(B)還根據(jù)消息包中包含的信息,同時(shí)更新本地緩存的消息包相 鄰節(jié)點(diǎn)序列當(dāng)中與接收節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的消息發(fā)送信息,如該節(jié)點(diǎn)是消息包 相鄰節(jié)點(diǎn)序列中相鄰節(jié)點(diǎn)個(gè)數(shù)排在第N位的節(jié)點(diǎn),則在該節(jié)點(diǎn)的消息發(fā)送 信息中添加該消息包的發(fā)送時(shí)間段信息,該發(fā)送時(shí)間段為接收節(jié)點(diǎn)的第N個(gè)空閑時(shí)間段。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述消息包的發(fā)送時(shí)間段信息為時(shí)間段的起始時(shí)刻,稱為發(fā)送時(shí)刻;所迷消息發(fā)送信息包括a)消息隊(duì) 列首個(gè)消息包的發(fā)送時(shí)刻;b)消息發(fā)送時(shí)刻表表項(xiàng)總數(shù);c)消息隊(duì)列發(fā)送時(shí) 刻表,每一表項(xiàng)記錄了消息隊(duì)列中一個(gè)消息包的發(fā)送時(shí)刻。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述消息發(fā)送信息中還包括各 個(gè)消息包的發(fā)送信道信息;步驟(a)將消息包放入消息隊(duì)列時(shí),還按以下方法選擇其發(fā)送信道如不插隊(duì),判斷C-T是否大于等于S,如果沒有,就選擇上一個(gè)消息 包所采用的信道,否則就更換為另一個(gè)信道;其中,C表示該消息包的發(fā)送 時(shí)刻,T表示隊(duì)列中上一個(gè)不同信道的消息包的發(fā)送時(shí)刻,S表示當(dāng)前選定 或隨機(jī)選定的信道切換時(shí)間間隔;如插隊(duì),則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對(duì)消息隊(duì)列的最后 一個(gè)消息包,按上述不插隊(duì)時(shí)的相同方式來選定一個(gè)發(fā)送信道;步驟(c)發(fā)送消息包時(shí),先判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當(dāng)前信道 是否相同,如果不相同,先切換到預(yù)定信道后,再進(jìn)行后續(xù)發(fā)送步驟。進(jìn)一步地,上述方法還可具有以下特點(diǎn)步驟(c)在發(fā)送時(shí)間段中, 節(jié)點(diǎn)是隨機(jī)選擇一個(gè)時(shí)機(jī)發(fā)送所述消息包,如杲發(fā)送成功,需更新本地緩存 的本節(jié)點(diǎn)消息發(fā)送信息中的消息隊(duì)列首個(gè)消息包的發(fā)送時(shí)刻。進(jìn)一步地,上述方法還可具有以下特點(diǎn)在消息包結(jié)構(gòu)中還包含該消息 包的已經(jīng)過節(jié)點(diǎn)信息;步驟(b)中還將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的已經(jīng)過節(jié)點(diǎn)進(jìn)行 比較,對(duì)得到的兩個(gè)比例值或個(gè)數(shù)加權(quán)后再與設(shè)定閾值比較,如未超過設(shè)定 閾值時(shí),符合轉(zhuǎn)發(fā)條件,在消息包中的已經(jīng)過節(jié)點(diǎn)不包括本節(jié)點(diǎn)時(shí),將本節(jié) 點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中,執(zhí)行步驟(c)。進(jìn)一步地,上迷方法還可具有以下特點(diǎn)步驟(B )還判斷消息隊(duì)列中是否存在消息標(biāo)i只和源地址都與收到的消 息包相同的消息包如果存在,在消息包結(jié)構(gòu)中包含該消息包的已經(jīng)過節(jié)點(diǎn)信息時(shí),將該消 息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)合并到消息隊(duì)列中相同消息包緩存的已經(jīng)過節(jié)點(diǎn) 標(biāo)識(shí)當(dāng)中,然后丟棄收到的該消息包,否則直接丟棄;如果不存在,執(zhí)行步驟(C)。 進(jìn)一步地,上述方法還可具有以下特點(diǎn)步驟(C)進(jìn)行顯示處理時(shí),先按照用戶設(shè)定的過濾規(guī)則檢查消息內(nèi)容, 如可以顯示,則將消息顯示在用戶圖形界面上供用戶瀏覽,否則,不顯示, 結(jié)束。進(jìn)一步地,上述方法還可具有以下特點(diǎn)步驟(b)如超過設(shè)定閾值,判 斷消息包不符合轉(zhuǎn)發(fā)條件時(shí),和/或步驟(c)發(fā)送失敗時(shí),將所述消息包重 新放入消息隊(duì)列的末尾。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣 播方法,在消息包結(jié)構(gòu)中包含已經(jīng)過節(jié)點(diǎn)的信息,其中消息廣播過程包括以 下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,在前一 消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包準(zhǔn)備發(fā)送;(b) 將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的已到過節(jié)點(diǎn)進(jìn)行比較,當(dāng) 相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),在消息包中的已經(jīng)過節(jié)點(diǎn)不包括 本節(jié)點(diǎn)時(shí),將本節(jié)點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中,執(zhí)行下一 步;(c) 將該消息包交驅(qū)動(dòng)層廣播發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動(dòng)無(wú)線自組網(wǎng)的消息廣播和接收方法,其中消息接收過程包括以下步驟 (A)節(jié)點(diǎn)收到消息包;(B )判斷消息隊(duì)列中是否存在消息標(biāo)識(shí)和源地址都與收到的消息包相 同的消息包,如果存在,丟棄收到的該消息包,如果不存在,執(zhí)行步驟(C)。(C)對(duì)該消息包進(jìn)行轉(zhuǎn)發(fā)和顯示處理。進(jìn)一步地,上述方法還可具有以下特點(diǎn)在消息包結(jié)構(gòu)中還包含該消息 包的已經(jīng)過節(jié)點(diǎn)信息;消息廣播過程包括以下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,在前一 消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包準(zhǔn)備發(fā)送;(b) 將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的已到過節(jié)點(diǎn)進(jìn)行比較,當(dāng) 相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),在消息包中的已經(jīng)過節(jié)點(diǎn)不包括 本節(jié)點(diǎn)時(shí),將本節(jié)點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中,執(zhí)行下一 步;(c) 將該消息包交驅(qū)動(dòng)層廣播發(fā)送;步驟(B)中,如消息隊(duì)列中是否存在消息標(biāo)識(shí)和源地址都與收到的消 息包相同的消息包,先將該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)合并到消息隊(duì)列中相 同消息包緩存的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)當(dāng)中,再丟棄收到的該消息包。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣 播方法,其特征在于,在消息包不符合轉(zhuǎn)發(fā)條件時(shí),將所述消息包重新放入 消息隊(duì)列的末尾準(zhǔn)備發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動(dòng)無(wú)線自組網(wǎng)的消息廣 播和接收方法,在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點(diǎn)的消息發(fā)送信息, 而在節(jié)點(diǎn)上緩存本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,本節(jié)點(diǎn)的消息發(fā)送信息 中包含該節(jié)點(diǎn)消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信息,周邊節(jié)點(diǎn)的消 息發(fā)送信息中包含相應(yīng)節(jié)點(diǎn)的標(biāo)識(shí)及其消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送 時(shí)間段信息;節(jié)點(diǎn)在一個(gè)時(shí)間段發(fā)送一個(gè)消息包,時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng) 一設(shè)定的;其中消息廣播過程包括以下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,按以下 方法逸定其發(fā)送時(shí)間段,然后更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息;如不插隊(duì),查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時(shí)間段作為其發(fā)送時(shí)間段;如插隊(duì)時(shí),插入隊(duì)列的消息包占用緊挨其后的消息包的發(fā)送時(shí)間段,而 后者占用緊隨其后的消息包的發(fā)送時(shí)間段,依此類推,對(duì)消息隊(duì)列的最后一 個(gè)消息包,則重新查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的空閑 時(shí)間段作為其發(fā)送時(shí)間段;(b) 在前一消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包;(c) 在預(yù)定的發(fā)送時(shí)間段內(nèi)將該消息包交驅(qū)動(dòng)層廣播隨機(jī)發(fā)送; 在消息接收過程包括以下步驟(A)節(jié)點(diǎn)收到消息包;(B )才艮據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點(diǎn)的消息 發(fā)送信息或更新已有的該節(jié)點(diǎn)的消息發(fā)送信息;(C)對(duì)該消息包進(jìn)行轉(zhuǎn)發(fā)和顯示處理。進(jìn)一步地,上述方法還可具有以下特點(diǎn)在消息包結(jié)構(gòu)中還包含發(fā)送該 消息包的節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息,包括相鄰節(jié)點(diǎn)的個(gè)數(shù)信息和相鄰節(jié)點(diǎn)的標(biāo)識(shí) 信息;步驟(b)更新所述消息包中緩存的相鄰節(jié)點(diǎn)時(shí),是按本地緩存的相鄰 節(jié)點(diǎn)的相鄰節(jié)點(diǎn)個(gè)數(shù)的多少按序排列,得到相鄰節(jié)點(diǎn)序列;步驟(B)還根據(jù)消息包中包含的信息,同時(shí)更新本地緩存的消息包相 鄰節(jié)點(diǎn)序列當(dāng)中與接收節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的消息發(fā)送信息,如該節(jié)點(diǎn)是消息包 相鄰節(jié)點(diǎn)序列中相鄰節(jié)點(diǎn)個(gè)數(shù)排在第N位的節(jié)點(diǎn),則在該節(jié)點(diǎn)的消息發(fā)送 信息中添加該消息包的發(fā)送時(shí)間段信息,該發(fā)送時(shí)間段為接收節(jié)點(diǎn)的第N 個(gè)空閑時(shí)間段。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣 播方法,節(jié)點(diǎn)在一個(gè)時(shí)間段發(fā)送一個(gè)消息包,時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一設(shè)定的,消息包結(jié)構(gòu)中包括備個(gè)消息包的發(fā)送信道信息,該方法包括以下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,按以下方法選棒其發(fā)送信道,然后更新緩存的消息隊(duì)列中各個(gè)消息包的發(fā)送信道信息如不插隊(duì),判斷C-T是否大于等于S,如果沒有,就選擇上一個(gè)消息 包所采用的信道,否則就更換為另一個(gè)信道;其中,C表示該消息包發(fā)送時(shí) 間段的起始時(shí)刻,T表示隊(duì)列中上一個(gè)不同信道的消息包發(fā)送時(shí)間段的起始 時(shí)刻,S表示當(dāng)前選定或隨機(jī)選定的信道切換時(shí)間間隔;如插隊(duì),則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對(duì)消息隊(duì)列的最后 一個(gè)消息包,按上述不插隊(duì)時(shí)的相同方式來選定一個(gè)發(fā)送信道;(b) 在前一消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包,判 斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當(dāng)前信道是否相同,如果不相同,先切換到預(yù) 定信道,執(zhí)行下一步,否則直接執(zhí)行下一步;(c) 將該消息包交驅(qū)動(dòng)層廣纟番發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣 播方法,包括以下步驟(a)節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包按以下排序規(guī)則中的一 個(gè)或任意組合將消息包放入消息隊(duì)列規(guī)則一,將消息分為多個(gè)優(yōu)先級(jí),其中原創(chuàng)消息包的優(yōu)先級(jí)高于轉(zhuǎn)發(fā)的 消息包,對(duì)于同一優(yōu)先級(jí)的消息包按照時(shí)間順序來決定消息在隊(duì)列中的位 置,高優(yōu)先級(jí)的消息包可以插入到低優(yōu)先級(jí)的消息包前面;規(guī)則二,對(duì)于要轉(zhuǎn)發(fā)的消息包,如果隊(duì)列中最后N個(gè)消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊(duì)列 最后N-l個(gè)消息包前面。(b)在前一消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包,包 交驅(qū)動(dòng)層廣播發(fā)送。進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述規(guī)則一中,在將高優(yōu)先級(jí) 的消息包插入到低優(yōu)先級(jí)的消息包前面時(shí),如果兩個(gè)高優(yōu)先級(jí)的消息包在消 息隊(duì)列中的位置相鄰,則至少要間隔一個(gè)低優(yōu)先級(jí)的消息包。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動(dòng)無(wú)線自組網(wǎng)的終端節(jié) 點(diǎn),包括應(yīng)用層、驅(qū)動(dòng)層和硬件層,其特征在于,所述應(yīng)用層進(jìn)一步包括消息編輯和顯示模塊,用于支持用戶對(duì)消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊(duì)列處理模塊,進(jìn)一步包括隊(duì)列控制單元,用于將驅(qū)動(dòng)層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊(duì)列,消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送 消息隊(duì)列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進(jìn)一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的相鄰節(jié) 點(diǎn)進(jìn)行比較,當(dāng)相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),認(rèn)為其符合轉(zhuǎn)發(fā) 條件,否則認(rèn)為其不符合轉(zhuǎn)發(fā)條件;消息包信息更新單元,用于更新符合轉(zhuǎn)發(fā)條件的消息包中的相鄰節(jié)點(diǎn)信 息,然后觸發(fā)發(fā)送控制單元;發(fā)送控制單元,用于將消息包交驅(qū)動(dòng)層廣播發(fā)送。消息接收模塊,進(jìn)一步包括周邊節(jié)點(diǎn)信息更新單元,用于根據(jù)驅(qū)動(dòng)層上傳消息包中的信息,在本地 緩存消息包發(fā)送節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息或更新已保存的該節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信 息,包括相鄰節(jié)點(diǎn)的個(gè)數(shù)及標(biāo)識(shí)信息;消息包傳遞單元,用于將接收的消息包傳遞到消息隊(duì)列處理模塊以及消息編輯和顯示;):莫塊;存儲(chǔ)模塊,用于在本地緩存周邊節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述隊(duì)列控制單元按以下排序規(guī)則中的一個(gè)或任意組合將消息包放入消息隊(duì)列規(guī)則一,將消息分為多個(gè)優(yōu)先級(jí),其中原創(chuàng)消息包的優(yōu)先級(jí)高于轉(zhuǎn)發(fā)的 消息包,對(duì)于同 一優(yōu)先級(jí)的消息包按照時(shí)間順序來決定消息在隊(duì)列中的位 置,高優(yōu)先級(jí)的消息包可以插入到低優(yōu)先級(jí)的消息包前面;規(guī)則二,對(duì)于要轉(zhuǎn)發(fā)的消息包,如果隊(duì)列中最后N個(gè)消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊(duì)列 最后N-l個(gè)消息包前面。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所迷消息隊(duì)列處理模塊還包括時(shí)間段選擇單元,用于按以下方法為加入 消息隊(duì)列的消息包選定發(fā)送時(shí)間段如不插隊(duì),查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時(shí)間段作為其發(fā)送時(shí)間段;如插隊(duì)時(shí),插入隊(duì)列的消息包占用緊挨其后的消息包的發(fā)送時(shí)間段,而 后者占用緊隨其后的消息包的發(fā)送時(shí)間段,依此類推,對(duì)消息隊(duì)列的最后一 個(gè)消息包,則重新查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的空閑 時(shí)間段作為其發(fā)送時(shí)間段;所述消息隊(duì)列處理模塊還包括發(fā)送信息更新單元,用于根據(jù)為消息包選 定的發(fā)送時(shí)間段,更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息;所述消息隊(duì)列處理模塊的發(fā)送調(diào)用單元是在下一個(gè)需要發(fā)送消息包的 發(fā)送時(shí)間段,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊(duì)列最前面的消息包;所述消息轉(zhuǎn)發(fā)模塊的發(fā)送控制單元是在消息包的預(yù)定發(fā)送時(shí)間段內(nèi)隨 機(jī)地將其交給驅(qū)動(dòng)層廣播發(fā)送,在一個(gè)時(shí)間段發(fā)送一個(gè)消息包,且時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一設(shè)定的;所迷消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元還用于根據(jù)本節(jié)點(diǎn)當(dāng)前的消息發(fā)送信息數(shù)據(jù),更新符合轉(zhuǎn)發(fā)條件的消息包中的消息發(fā)送信息數(shù)據(jù);所述消息接收模塊的周邊節(jié)點(diǎn)信息更新單元還用于根據(jù)消息包中包含 發(fā)送節(jié)點(diǎn)消息隊(duì)列中各個(gè)消息包發(fā)送時(shí)間段信息的消息發(fā)送信息,在本地添加該發(fā)送節(jié)點(diǎn)的消息發(fā)送信息或更新已有的該節(jié)點(diǎn)的消息發(fā)送信息;所述存儲(chǔ)模塊還用于緩存本節(jié)點(diǎn)的消息發(fā)送信息,包含該節(jié)點(diǎn)消息發(fā)送 隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信息;以及周邊節(jié)點(diǎn)的消息發(fā)送信息,包含 相應(yīng)節(jié)點(diǎn)的標(biāo)識(shí)及其消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信息。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元在緩存或更新消息包發(fā)送節(jié) 點(diǎn)的相鄰節(jié)點(diǎn)信息時(shí),是按本地緩存的相鄰節(jié)點(diǎn)的相鄰節(jié)點(diǎn)個(gè)數(shù)的多少按序 排列,得到相鄰節(jié)點(diǎn)序列;所述消息隊(duì)列處理模塊的發(fā)送信息更新單元還用于根據(jù)為消息包選定 的發(fā)送信道,更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息;所述消息接收模塊的周邊節(jié)點(diǎn)信息更新單元還根據(jù)消息包中的消息發(fā) 送信息及相鄰節(jié)點(diǎn)序列,更新本地緩存的消息包相鄰節(jié)點(diǎn)序列中與接收節(jié)點(diǎn) 相鄰的節(jié)點(diǎn)的消息發(fā)送信息,如該節(jié)點(diǎn)是消息包相鄰節(jié)點(diǎn)序列中相鄰節(jié)點(diǎn)個(gè) 數(shù)排在第N位的節(jié)點(diǎn),在該節(jié)點(diǎn)的消息發(fā)送信息中添加該消息包的發(fā)送時(shí) 間段信息,該發(fā)送時(shí)間段為接收節(jié)點(diǎn)的第N個(gè)空閑時(shí)間段。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述消息隊(duì)列處理模塊還包括信道選擇單元,用于按以下方法為加入消 息隊(duì)列的消息包選定發(fā)送信道如不插隊(duì),判斷C-T是否大于等于S,如果沒有,就選擇上一個(gè)消息 包所采用的信道,否則就更換為另一個(gè)信道;其中,C表示該消息包發(fā)送時(shí) 間段的起始時(shí)刻,T表示隊(duì)列中上一個(gè)不同信道的消息包發(fā)送時(shí)間段的起始 時(shí)刻,S表示當(dāng)前選定或隨機(jī)選定的信道切換時(shí)間間隔,時(shí)間_敬長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一i殳定的;如插隊(duì),則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對(duì)消息隊(duì)列的最后 一個(gè)消息包,按上述不插隊(duì)時(shí)的相同方式來選定一個(gè)發(fā)送信道;所述消息轉(zhuǎn)發(fā)模塊還包括信道切換控制單元,用于判斷要轉(zhuǎn)發(fā)消息包預(yù) 定的信道和當(dāng)前信道是否相同,如不相同,先切換到預(yù)定信道,再觸發(fā)消息 包信息更新單元,否則直接觸發(fā)消息包信息更新單元。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述存儲(chǔ)模塊緩存的本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息包括a)消息 隊(duì)列首個(gè)消息包的發(fā)送時(shí)刻,發(fā)送時(shí)刻指相應(yīng)發(fā)送時(shí)間段的起始時(shí)刻;b)消 息發(fā)送時(shí)刻表表項(xiàng)總數(shù);c)消息隊(duì)列發(fā)送時(shí)刻表,每一表項(xiàng)記錄了消息隊(duì) 列中一個(gè)消息包的發(fā)送時(shí)刻。所述消息隊(duì)列處理模塊的發(fā)送信息更新單元還用于在消息包發(fā)送成功 后,更新本地緩存的本節(jié)點(diǎn)消息發(fā)送信息中的消息隊(duì)列首個(gè)消息包的發(fā)送時(shí)刻。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述消息轉(zhuǎn)發(fā)模塊的轉(zhuǎn)發(fā)條件判斷單元還用于將本節(jié)點(diǎn)的當(dāng)前相鄰節(jié) 點(diǎn)與要轉(zhuǎn)發(fā)消息包中緩存的已經(jīng)過節(jié)點(diǎn)進(jìn)行比較,對(duì)得到的兩個(gè)比例值或個(gè) 數(shù)加權(quán)后再與設(shè)定閾值比較,如未超過設(shè)定閾值,則認(rèn)為該消息包符合轉(zhuǎn)發(fā) 條件,否則i^為其不符合轉(zhuǎn)發(fā)條件;所述消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元還用于更新符合轉(zhuǎn)發(fā)條件的 消息包中的已經(jīng)過節(jié)點(diǎn)信息,即在消息包中的已經(jīng)過節(jié)點(diǎn)不包括本節(jié)點(diǎn)時(shí), 將本節(jié)點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述消息接收模塊還包括相同消息包判定處理單元,用于判斷在消息隊(duì) 列中是否存在消息標(biāo)識(shí)和源地址都與該消息包相同的消息包如果存在,在消息包結(jié)構(gòu)中包含該消息包的已經(jīng)過節(jié)點(diǎn)信息時(shí),將該消 息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)合并到消息隊(duì)列中相同消息包緩存的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)當(dāng)中,然后丟棄收到的該消息包,否則直接丟并; 如果不存在,觸發(fā)消息包傳遞單元工作。 進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述應(yīng)用層還包括過濾模塊,用于接收消息接收模塊的消息包傳遞單元 傳遞的消息包,根據(jù)用戶設(shè)置的過濾規(guī)則將符合條件的消息傳遞到消息編輯 和顯示模塊進(jìn)行顯示,如果不符合過濾條件,則不將該消息包傳遞到消息編 輯和顯示模塊。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)轉(zhuǎn)發(fā)條件判斷單元在判斷消息包不符合轉(zhuǎn)發(fā)條件時(shí),將所述消息包重新 放入消息隊(duì)列的末尾;和/或發(fā)送控制單元在發(fā)送失敗時(shí),將所述消息包重新放入消息隊(duì)列的末尾。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動(dòng)無(wú)線自組網(wǎng)的終端節(jié) 點(diǎn),包括應(yīng)用層、驅(qū)動(dòng)層和硬件層,其特征在于,所述應(yīng)用層進(jìn)一步包括消息編輯和顯示模塊,用于支持用戶對(duì)消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊(duì)列處理模塊,進(jìn)一步包括隊(duì)列控制單元,用于將驅(qū)動(dòng)層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊(duì)列,消息包結(jié)構(gòu)中包含已經(jīng)過節(jié)點(diǎn)的信息;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個(gè)需要發(fā)送消息 包的發(fā)送時(shí)間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊(duì)列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進(jìn)一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的已經(jīng)過 節(jié)點(diǎn)進(jìn)行比較,當(dāng)相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),認(rèn)為其符合轉(zhuǎn) 發(fā)條件,否則認(rèn)為其不符合轉(zhuǎn)發(fā)條件;消息包信息更新單元,用于對(duì)符合轉(zhuǎn)發(fā)條件的消息包,在消息包中的已 經(jīng)過節(jié)點(diǎn)不包括本節(jié)點(diǎn)時(shí),將本節(jié)點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中;發(fā)送控制單元,用于將消息包交驅(qū)動(dòng)層廣播發(fā)送;消息接收模塊,用于接收消息包并將其傳遞到消息隊(duì)列處理模塊進(jìn)行轉(zhuǎn) 發(fā),以及傳遞到消息編輯和顯示模塊進(jìn)行顯示。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動(dòng)無(wú)線自組網(wǎng)的終端節(jié) 點(diǎn),包括應(yīng)用層、驅(qū)動(dòng)層和硬件層,其特征在于,所述應(yīng)用層進(jìn)一步包括消息編輯和顯示模塊,用于支持用戶對(duì)消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊(duì)列處理模塊,用于將驅(qū)動(dòng)層獲取的消息包以及用戶創(chuàng)建的消息包 放入消息隊(duì)列,在前一消息包發(fā)送完成后,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊(duì)列 最前面的消息包;消息轉(zhuǎn)發(fā)模塊,用于將消息包交驅(qū)動(dòng)層廣播發(fā)送; 消息接收模塊,進(jìn)一步包括相同消息包判定處理單元,用于判斷在消息隊(duì)列中是否存在消息標(biāo)識(shí)和 源地址都與該消息包相同的消息包,如果存在,丟棄收到的該消息包;如果 不存在,觸發(fā)消息包傳遞單元工作;消息包傳遞單元,用于將接收的消息包傳遞到消息隊(duì)列處理模塊以及消息編輯和顯示;f莫塊。進(jìn)一步地,上述裝置還可具有以下特點(diǎn) 所述消息轉(zhuǎn)發(fā)模塊進(jìn)一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點(diǎn)的當(dāng)前相鄰節(jié)點(diǎn)與要轉(zhuǎn)發(fā)消息包中緩 存的已經(jīng)過節(jié)點(diǎn)進(jìn)行比較,得到的比例值或個(gè)數(shù)與設(shè)定閾值比較,如未超過 設(shè)定閾值,則認(rèn)為該消息包符合轉(zhuǎn)發(fā)條件,否則認(rèn)為其不符合轉(zhuǎn)發(fā)條件;消息包信息更新單元,用于在消息包中的已經(jīng)過節(jié)點(diǎn)不包括本節(jié)點(diǎn)時(shí),將本節(jié)點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中;發(fā)送控制單元,用于將消息包交驅(qū)動(dòng)層廣播發(fā)送;所迷消息接收模塊的相同消息包判定處理單元在判斷出消息隊(duì)列中存 在消息標(biāo)識(shí)和源地址都與該消息包相同的消息包時(shí),先將該消息包中的已經(jīng) 過節(jié)點(diǎn)標(biāo)識(shí)合并到消息隊(duì)列中相同消息包緩存的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)當(dāng)中,然后 再丟棄該消息包。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動(dòng)無(wú)線自組網(wǎng)的終端節(jié) 點(diǎn),包括應(yīng)用層、驅(qū)動(dòng)層和硬件層,其特征在于,所述應(yīng)用層在消息包不符 合轉(zhuǎn)發(fā)條件時(shí),將所迷消息包重新放入消息隊(duì)列的末尾準(zhǔn)備發(fā)送。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動(dòng)無(wú)線自組網(wǎng)的終端節(jié) 點(diǎn),包括應(yīng)用層、驅(qū)動(dòng)層和硬件層,其特征在于,所述應(yīng)用層進(jìn)一步包括消息編輯和顯示模塊,用于支持用戶對(duì)消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊(duì)列處理才莫塊,進(jìn)一步包括隊(duì)列控制單元,用于將驅(qū)動(dòng)層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊(duì)列;時(shí)間段選擇單元,用于按以下方法為加入消息隊(duì)列的消息包選定發(fā)送時(shí) 間段如不插隊(duì),查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時(shí)間段作為其發(fā)送時(shí)間段;如插隊(duì)時(shí),插入隊(duì)列的消息包占用緊挨其后的消息包的發(fā)送時(shí)間段,而 后者占用緊隨其后的消息包的發(fā)送時(shí)間段,依此類推,對(duì)消息隊(duì)列的最后一 個(gè)消息包,則重新查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的空閑 時(shí)間段作為其發(fā)送時(shí)間段;發(fā)送信息更新單元,用于根據(jù)為消息包選定的發(fā)送時(shí)間段,更新緩存在 本地的本節(jié)點(diǎn)消息發(fā)送信息;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個(gè)需要發(fā)送消息包的發(fā)送時(shí)間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊(duì)列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進(jìn)一步包括消息包信息更新單元,用于根據(jù)本節(jié)點(diǎn)當(dāng)前的消息發(fā)送信息數(shù)據(jù),更新符^^轉(zhuǎn)發(fā)條件的消息包中的消息發(fā)送信息數(shù)據(jù),然后觸發(fā)發(fā)送控制單元;發(fā)送控制單元,用于在消息包的預(yù)定發(fā)送時(shí)間段內(nèi)隨機(jī)地將其交給驅(qū)動(dòng) 層廣播發(fā)送,在一個(gè)時(shí)間段發(fā)送一個(gè)消息包,且時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一 設(shè)定的;消息接收模塊,進(jìn)一步包括周邊節(jié)點(diǎn)信息更新單元,用于根據(jù)消息包中包舍發(fā)送節(jié)點(diǎn)消息隊(duì)列中各 個(gè)消息包的發(fā)送時(shí)間段信息的消息發(fā)送信息,在本地添加該發(fā)送節(jié)點(diǎn)的消息 發(fā)送信息或更新已有的該節(jié)點(diǎn)的消息發(fā)送信息;消息包傳遞單元,用于將接收的消息包傳遞到消息隊(duì)列處理模塊以及消 息編輯和顯示4莫塊;存儲(chǔ)模塊,用于緩存本節(jié)點(diǎn)的消息發(fā)送信息,包含該節(jié)點(diǎn)消息發(fā)送隊(duì)列 中各個(gè)消息包的發(fā)送時(shí)間段信息;以及周邊節(jié)點(diǎn)的消息發(fā)送信息,包含相應(yīng) 節(jié)點(diǎn)的標(biāo)識(shí)及其消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信息。進(jìn)一步地,上述裝置還可具有以下特點(diǎn)所述消息轉(zhuǎn)發(fā)模塊的消息包信息更新單元在緩存或更新消息包發(fā)送節(jié) 點(diǎn)的相鄰節(jié)點(diǎn)信息時(shí),是按本地緩存的相鄰節(jié)點(diǎn)的相鄰節(jié)點(diǎn)個(gè)數(shù)的多少按序 排列,得到相鄰節(jié)點(diǎn)序列;所述消息隊(duì)列處理模塊的發(fā)送信息更新單元還用于根據(jù)為消息包選定 的發(fā)送信道,更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息;所述消息接收模塊的周邊節(jié)點(diǎn)信息更新單元還根據(jù)消息包中的消息發(fā) 送信息及相鄰節(jié)點(diǎn)序列,更新本地緩存的消息包相鄰節(jié)點(diǎn)序列中與接收節(jié)點(diǎn) 相鄰的節(jié)點(diǎn)的消息發(fā)送信息,如該節(jié)點(diǎn)是消息包相鄰節(jié)點(diǎn)序列中相鄰節(jié)點(diǎn)個(gè) 數(shù)排在第N位的節(jié)點(diǎn),在該節(jié)點(diǎn)的消息發(fā)送信息中添加該消息包的發(fā)送時(shí) 間段信息,該發(fā)送時(shí)間段為接收節(jié)點(diǎn)的第N個(gè)空閑時(shí)間段。為了解決上述技術(shù)問題,本發(fā)明還提供了一種移動(dòng)無(wú)線自組網(wǎng)的終端節(jié)點(diǎn),包栝應(yīng)用層、驅(qū)動(dòng)層和硬件層,其特征在于,所述應(yīng)用層進(jìn)一步包括消息編輯和顯示模塊,用于支持用戶對(duì)消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊(duì)列處理模塊,進(jìn)一步包括隊(duì)列控制單元,用于將驅(qū)動(dòng)層獲取的消息包以及用戶創(chuàng)建的消息包放入 消息隊(duì)列;信道選擇單元,用于按以下方法為加入消息隊(duì)列的消息包選定發(fā)送信道如不插隊(duì),判斷C-T是否大于等于S,如果沒有,就選擇上一個(gè)消息 包所采用的信道,否則就更換為另一個(gè)信道;其中,C表示該消息包發(fā)送時(shí) 間段的起始時(shí)刻,T表示隊(duì)列中上一個(gè)不同信道的消息包發(fā)送時(shí)間段的起始 時(shí)刻,S表示當(dāng)前選定或隨機(jī)選定的信道切換時(shí)間間隔,時(shí)間段長(zhǎng)度對(duì)各節(jié) 點(diǎn)是統(tǒng)一設(shè)定的;如插隊(duì),則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對(duì)消息隊(duì)列的最后 一個(gè)消息包,按上述不插隊(duì)時(shí)的相同方式來選定一個(gè)發(fā)送信道;發(fā)送信息更新單元,用于根據(jù)為消息包選定的發(fā)送信道,更新緩存在本 地的本節(jié)點(diǎn)消息隊(duì)列中各個(gè)消息包的發(fā)送信道;發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個(gè)需要發(fā)送消息 包的發(fā)送時(shí)間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊(duì)列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,進(jìn)一步包括信道切換控制單元,用于判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當(dāng)前信道是否 相同,如不相同,先切換到預(yù)定信道;發(fā)送控制單元,用于在消息包的預(yù)定發(fā)送時(shí)間段內(nèi)將其交給驅(qū)動(dòng)層廣播 發(fā)送,在一個(gè)時(shí)間段發(fā)送一個(gè)消息包;消息接收模塊,用于接收消息包并將其傳遞到消息隊(duì)列處理模塊以及消息編輯和顯示模塊;存儲(chǔ)模塊,用于緩存本節(jié)點(diǎn)消息發(fā)送隊(duì)列中各消息包的發(fā)送信道信息。為了解決上述技術(shù)問題,本發(fā)明還提供了 一種移動(dòng)無(wú)線自組網(wǎng)的終端節(jié) 點(diǎn),包括應(yīng)用層、驅(qū)動(dòng)層和硬件層,其特征在于,所述應(yīng)用層進(jìn)一步包括消息編輯和顯示模塊,用于支持用戶對(duì)消息的編輯和發(fā)送,以及支持消 息的顯示;消息隊(duì)列處理^lt塊,進(jìn)一步包括隊(duì)列控制單元,用于按以下排序規(guī)則中的一個(gè)或任意組合將消息包放入 消息隊(duì)列規(guī)則一,將消息分為多個(gè)優(yōu)先級(jí),其中原創(chuàng)消息包的優(yōu)先級(jí)高于轉(zhuǎn)發(fā)的 消息包,對(duì)于同 一優(yōu)先級(jí)的消息包按照時(shí)間順序來決定消息在隊(duì)列中的位 置,高優(yōu)先級(jí)的消息包可以插入到低優(yōu)先級(jí)的消息包前面;規(guī)則二,對(duì)于要轉(zhuǎn)發(fā)的消息包,如果隊(duì)列中最后N個(gè)消息包的源地址 相同而新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊(duì)列 最后N-l個(gè)消息包前面。發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送 消息隊(duì)列最前面的消息包;消息轉(zhuǎn)發(fā)模塊,用于將消息包交驅(qū)動(dòng)層廣播發(fā)送;消息接收模塊,用于接收消息包并將其傳遞到消息隊(duì)列處理模塊以及消 息編輯和顯示模塊。應(yīng)注意的是,雖然在實(shí)施例中將以上各個(gè)方法組合在一起使用,但明顯 示地,這些方法均可以獨(dú)立使用,并達(dá)到各自的技術(shù)效果。綜上所述,本發(fā)的消息廣播相對(duì)于目前學(xué)術(shù)研究的廣播算法有明顯的區(qū) 別,可以選擇到 一個(gè)合理的轉(zhuǎn)發(fā)時(shí)機(jī)以節(jié)約系統(tǒng)帶寬和負(fù)載均衡。1)消息包里會(huì)緩存一部分節(jié)點(diǎn)地址信息,用來表示此消息曾經(jīng)到過的 節(jié)點(diǎn)(可不區(qū)分到達(dá)的先后順序),由接收節(jié)點(diǎn)來更新。當(dāng)移動(dòng)節(jié)點(diǎn)準(zhǔn)備發(fā)送此消息時(shí)需要先對(duì)比消息包里緩存的已經(jīng)過節(jié)點(diǎn)地址信息,如果發(fā)現(xiàn)周圍有 很多新的節(jié)點(diǎn),那么就選擇發(fā)送。如果相鄰節(jié)點(diǎn)中有相當(dāng)一部分是已經(jīng)過節(jié) 點(diǎn),就沒有必要此時(shí)轉(zhuǎn)發(fā)出去。逸樣,消息將被優(yōu)先轉(zhuǎn)發(fā)到從來沒有與源節(jié) 點(diǎn)相鄰的新的相鄰節(jié)點(diǎn)上,之所以這么考慮是怕產(chǎn)生負(fù)載過于不均衡的現(xiàn) 象,使某些節(jié)點(diǎn)耗電量大大增加,同時(shí)希望消息能夠被帶到更遠(yuǎn)的地方。2) 消息包里還會(huì)緩存消息發(fā)送節(jié)點(diǎn)的相鄰節(jié)點(diǎn)地址列表,列表是按消息轉(zhuǎn)發(fā)優(yōu)先權(quán)的順序排列的。接收節(jié)點(diǎn)收到這個(gè)消息包之后會(huì)根據(jù)自己在相 鄰節(jié)點(diǎn)列表中的位置來決定發(fā)送時(shí)刻,這樣沖突的可能性會(huì)進(jìn)一步減少。3) 切換信道,這也是為了減少盲目發(fā)送,因?yàn)樯弦稽c(diǎn)在進(jìn)行相鄰節(jié)點(diǎn) 地址比較的時(shí)候主要考慮的是同一信道的節(jié)點(diǎn),如杲通訊信道不同的節(jié)點(diǎn), 則不是相鄰節(jié)點(diǎn)。移動(dòng)節(jié)點(diǎn)按照一定的規(guī)律在互不重合的信道上切換,干擾 能夠得到很好的抑制,避免過多的節(jié)點(diǎn)在同一信道上,從而導(dǎo)致網(wǎng)絡(luò)擁塞, 從而提高了 AD-HOC網(wǎng)絡(luò)的容量。4) 根據(jù)本節(jié)點(diǎn)地址在消息包紀(jì)錄的相鄰節(jié)點(diǎn)地址的先后順序,選擇發(fā) 送時(shí)機(jī)并進(jìn)行休眠,也是為了從應(yīng)用層減少發(fā)送沖突的概率。5) 對(duì)要發(fā)送或轉(zhuǎn)發(fā)的消息包劃分優(yōu)先級(jí),原創(chuàng)的消息可以具有較高的 轉(zhuǎn)發(fā)優(yōu)先級(jí),同時(shí)插入時(shí)不允許兩個(gè)高優(yōu)先級(jí)的消息包相鄰,能夠平衡別的 節(jié)點(diǎn)的消息,不至于當(dāng)用戶在不停的創(chuàng)建新消息的時(shí)候便攜設(shè)備無(wú)法轉(zhuǎn)發(fā)來 自別的節(jié)點(diǎn)的消息。6) 接收消息后能夠合并相同的消息(即源地址和消息ID (標(biāo)識(shí))都相 同的消息),刷新消息包中的地址緩存表。這樣的目的是為了減少重發(fā)次數(shù) 以節(jié)約無(wú)線帶寬,同時(shí)也是為了均衡轉(zhuǎn)發(fā),避免大量帶寬被一個(gè)節(jié)點(diǎn)所占用。7) 消息轉(zhuǎn)發(fā)的時(shí)間段可以根據(jù)本地及周邊節(jié)點(diǎn)消息轉(zhuǎn)發(fā)時(shí)刻表結(jié)構(gòu)來 確定的。消息包中會(huì)包含有轉(zhuǎn)發(fā)方的消息隊(duì)列消息發(fā)送信息表結(jié)構(gòu),當(dāng)接收 節(jié)點(diǎn)收到消息包之后會(huì)取出發(fā)送節(jié)點(diǎn)的消息隊(duì)列發(fā)送時(shí)刻表并保留下來。當(dāng) 接收節(jié)點(diǎn)需要轉(zhuǎn)發(fā)消息的時(shí)候就可以參考已經(jīng)存于本地的周邊節(jié)點(diǎn)的消息 隊(duì)列消息發(fā)送信息表結(jié)構(gòu),并參考消息包里緩存的相鄰節(jié)點(diǎn)的順序找到盡可 能靠前的空閑時(shí)間段來轉(zhuǎn)發(fā)消息。8) 在一個(gè)發(fā)送時(shí)間段內(nèi),消息轉(zhuǎn)發(fā)的時(shí)機(jī)是隨機(jī)的,源節(jié)點(diǎn)將消息傳 送到一個(gè)目的節(jié)點(diǎn)之后應(yīng)該休息相應(yīng)時(shí)間直到這個(gè)時(shí)間段結(jié)束,以讓別的節(jié) 點(diǎn)也能夠在這個(gè)時(shí)間段內(nèi)有機(jī)會(huì)發(fā)射,因?yàn)?02.11 MAC的接八機(jī)制不具有 公平性,越是搶不到信道的節(jié)點(diǎn)越難發(fā)射消息,所以需要應(yīng)用層來處理這一 問題。這個(gè)特點(diǎn)反映在根據(jù)相鄰節(jié)點(diǎn)和消息包里的相鄰節(jié)點(diǎn)數(shù)隨機(jī)休眠的處 理上。9) 當(dāng)消息轉(zhuǎn)發(fā)的條件不滿足,不直接丟棄此條消息,而是將被移動(dòng)節(jié) 點(diǎn)緩存,以便在將來某個(gè)時(shí)刻繼續(xù)轉(zhuǎn)發(fā),因?yàn)榫W(wǎng)絡(luò)的節(jié)點(diǎn)隨時(shí)隨地在更新, 有可能當(dāng)移動(dòng)節(jié)點(diǎn)正想要轉(zhuǎn)發(fā)消息時(shí)發(fā)現(xiàn)周圍沒有相鄰節(jié)點(diǎn)或者周圍的相 鄰節(jié)點(diǎn)都已經(jīng)收到過這一條消息。所以緩存下來是希望消息能夠被帶到更多 的移動(dòng)節(jié)點(diǎn)上,算法處理上是將次消息又放置到消息隊(duì)列的末尾。


圖1是帶RTS/CTS的DCF機(jī)制工作過程的示意圖。圖2是AdHoc網(wǎng)絡(luò)中多個(gè)終端間相互通信的示意圖一。圖3是本發(fā)明實(shí)施例系統(tǒng)的結(jié)構(gòu)圖。圖4是本發(fā)明實(shí)施例消息廣播的流程圖。圖5是本發(fā)明實(shí)施例一次發(fā)送過程的流程圖。圖6是本發(fā)明實(shí)施例多個(gè)終端間相互通信的示意圖二。圖7是本發(fā)明實(shí)施例消息接收和顯示的流程圖。
具體實(shí)施方式
本發(fā)明實(shí)施例消息廣播和接收系統(tǒng)的結(jié)構(gòu)如圖3所示,該系統(tǒng)可以建立 在帶有WIFI ( Wi-Fi WirelessFidelity:無(wú)線保真)等芯片的智能手機(jī)上,也 可以建立在其他支持無(wú)線自組網(wǎng)通訊的便攜電子設(shè)備上。如圖所示,該系統(tǒng) 從上自下可以分成應(yīng)用層、驅(qū)動(dòng)層和硬件層,以下將詳細(xì)介紹各層中的模塊, 其中涉及到消息包格式的內(nèi)容將在下文中詳細(xì)介紹。本系統(tǒng)的核心部分就在應(yīng)用層,其他層次使用工業(yè)界標(biāo)準(zhǔn)的模塊就可以 實(shí)現(xiàn)。本實(shí)施例的應(yīng)用層進(jìn)一步包括消息編輯和顯示模塊,即圖形用戶界面系統(tǒng),用于支持用戶對(duì)消息的編輯和發(fā)送,以及支持消息的顯示; 消息隊(duì)列處理模塊,進(jìn)一步包括隊(duì)列控制單元,用于將驅(qū)動(dòng)層獲取的消息包以及用戶創(chuàng)建的消息包按照 設(shè)置的排序規(guī)則放入消息隊(duì)列。具體的規(guī)則詳見下文中的介紹,這里不再重復(fù)。時(shí)間段選擇單元,用于為加入消息隊(duì)列的消息包選定發(fā)送時(shí)間段,具體 方法見下文中的介紹,這里不再重復(fù)。信道選擇單元,用于為加入消息隊(duì)列的消息包選定發(fā)送信道,具體方法 詳見下文中的介紹,這里不再重復(fù)。發(fā)送信息更新單元,用于根據(jù)為消息包選定的發(fā)送時(shí)間段和發(fā)送信道, 更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu)(實(shí)施例是以表結(jié)構(gòu)來存放該 消息發(fā)送信息,但本發(fā)明不局限于此)。發(fā)送調(diào)用單元,用于在前一消息包發(fā)送完成后,在下一個(gè)需要發(fā)送消息 包的發(fā)送時(shí)間段調(diào)用消息轉(zhuǎn)發(fā)模塊發(fā)送消息隊(duì)列最前面的消息包。消息轉(zhuǎn)發(fā)模塊,進(jìn)一步包括轉(zhuǎn)發(fā)條件判斷單元,用于將本節(jié)點(diǎn)的當(dāng)前相鄰節(jié)點(diǎn)與要轉(zhuǎn)發(fā)消息包中緩 存的已經(jīng)過節(jié)點(diǎn)和/或相鄰節(jié)點(diǎn)進(jìn)行比較,如相同節(jié)點(diǎn)的比例值(可以是兩 個(gè)比例值加權(quán)后得到的比例值)或個(gè)數(shù)超過設(shè)定閾值,認(rèn)為不符合轉(zhuǎn)發(fā)條件, 暫緩轉(zhuǎn)發(fā)該消息包并將其放到消息隊(duì)列末尾,否則認(rèn)為符合轉(zhuǎn)發(fā)條件,觸發(fā) 信道切換單元。信道切換控制單元,用于判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當(dāng)前信道是否 相同,如果不相同,先切換到預(yù)定信道,再觸發(fā)信息更新單元,否則直接觸 發(fā)消息包信息更新單元。消息包信息更新單元,用于更新符合轉(zhuǎn)發(fā)條件的消息包中的相鄰節(jié)點(diǎn)信 息、已到過節(jié)點(diǎn)信息以及消息發(fā)送信息表結(jié)構(gòu),然后觸發(fā)發(fā)送控制單元,具 體方法詳見下文中的介紹,這里不再重復(fù)。發(fā)送控制單元,用于在消息包發(fā)送時(shí)間段內(nèi)隨機(jī)地將其交驅(qū)動(dòng)層廣播發(fā)放到消息隊(duì)列的末尾,同時(shí)此消息包的下一個(gè)消息包的發(fā)送時(shí)刻可提前到此消息包的發(fā)送時(shí)刻;如杲發(fā)送成功,更新本 地緩存的本節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu)中的消息隊(duì)列首個(gè)消息包的發(fā)送時(shí)刻。消息接收模塊,進(jìn)一步包括周邊節(jié)點(diǎn)信息更新單元,用于根據(jù)驅(qū)動(dòng)層上傳消息包中的信息,在本地 添加消息包中發(fā)送節(jié)點(diǎn)的消息發(fā)送信息表結(jié)構(gòu)或更新已有的該節(jié)點(diǎn)的消息 發(fā)送信息表結(jié)構(gòu),同時(shí)更新消息包相鄰節(jié)點(diǎn)序列當(dāng)中,與接收節(jié)點(diǎn)相鄰的節(jié) 點(diǎn)的消息發(fā)送信息表結(jié)構(gòu),以及在本地緩存消息包發(fā)送節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息 或更新已保存的該節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息,具體方法詳見下文中的介紹。相同消息包判定處理單元,用于判斷在消息隊(duì)列中是否存在與該消息包 相同的消息包,如果存在,將該消息包中的已經(jīng)過節(jié)點(diǎn)地址合并到消息隊(duì)列 中相同消息包緩存的已經(jīng)過節(jié)點(diǎn)地址當(dāng)中,丟棄收到的該消息包,如果不存在,觸發(fā)消息包傳遞單元;消息包傳遞單元,用于將接收的消息包傳遞到消息隊(duì)列處理模塊進(jìn)行轉(zhuǎn) 發(fā),以及傳遞到消息過濾模塊。消息過濾模塊,用于根據(jù)用戶設(shè)置的過濾規(guī)則將符合條件的消息傳遞到 消息編輯和顯示模塊,如果不符合過濾條件則不顯示的消息干擾用戶,用戶 只要能夠看到他想要的消息就可以了 。存儲(chǔ)模塊,用于在本地緩存本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息表結(jié)構(gòu), 周邊節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息。本節(jié)點(diǎn)的當(dāng)前相鄰節(jié)點(diǎn)信息可以緩存在驅(qū)動(dòng)層或 應(yīng)用層。驅(qū)動(dòng)層包括無(wú)線通訊驅(qū)動(dòng)模塊,用于控制相應(yīng)的硬件模塊將接收到的 消息向應(yīng)用層傳遞,并將應(yīng)用層發(fā)來的消息轉(zhuǎn)發(fā)給無(wú)線自組網(wǎng)里的相鄰設(shè)備 節(jié)點(diǎn),還可完成MAC地址表的更新。硬件層包括無(wú)線通訊芯片,是實(shí)現(xiàn)消息轉(zhuǎn)發(fā)和接收的物理硬件電路, 經(jīng)常使用的無(wú)線自組網(wǎng)通訊硬件模塊包括WIFI(802.1 la/b/g)和藍(lán)牙等。本實(shí)施例采用的消息包格式包括以下內(nèi)容,應(yīng)說明的是,其中的字節(jié)數(shù)<叉<又為一個(gè)示例。幀類型,2字節(jié),讓應(yīng)用軟件識(shí)別出來這是無(wú)線自組網(wǎng)消息廣播。 消息標(biāo)識(shí)(ID) , 4個(gè)字節(jié),消息的唯一標(biāo)識(shí)。 源地址,6個(gè)字節(jié),即創(chuàng)建此消息的節(jié)點(diǎn)的地址。 相鄰節(jié)點(diǎn)數(shù),l個(gè)字節(jié),指一跳范圍內(nèi)的相鄰的節(jié)點(diǎn)數(shù)。 消息內(nèi)容長(zhǎng)度,2個(gè)字節(jié),標(biāo)明消息內(nèi)容的長(zhǎng)度。 消息內(nèi)容,0 256,存放在消息內(nèi)容區(qū)。已經(jīng)過節(jié)點(diǎn)地址,0 512,這些地址都是本消息曾經(jīng)到過的節(jié)點(diǎn)的地址, 保存在消息包的地址緩存區(qū)。在該地址緩存區(qū)的起始位置可以存放已經(jīng)過節(jié) 點(diǎn);也址的個(gè)數(shù)。相鄰節(jié)點(diǎn)序列0 256,以地址序列的形式保存在消息包的另一地址緩 存區(qū),相鄰節(jié)點(diǎn)較多的相鄰節(jié)點(diǎn)的地址放在前面。在該地址緩存區(qū)的起始位 置可以存放相鄰節(jié)點(diǎn)地址個(gè)數(shù)。本節(jié)點(diǎn)的消息發(fā)送信息表結(jié)構(gòu),在發(fā)送的時(shí)候由消息轉(zhuǎn)發(fā)模塊來填寫, 該結(jié)構(gòu)又包括1) 消息隊(duì)列首個(gè)消息包的發(fā)送時(shí)刻8字節(jié),這里指首個(gè)消息包發(fā)送 時(shí)間段的起始時(shí)刻。節(jié)點(diǎn)在一個(gè)時(shí)間段發(fā)送一個(gè)消息包,時(shí)間段長(zhǎng)度對(duì)各節(jié) 點(diǎn)是統(tǒng)一設(shè)定的;應(yīng)當(dāng)注意的是消息包在發(fā)送時(shí)間段中是隨機(jī)發(fā)送的,發(fā)送 時(shí)刻只是用于標(biāo)識(shí)該發(fā)送時(shí)間段,并不一定是消息包真正的發(fā)送時(shí)間點(diǎn)。2) 消息發(fā)送時(shí)刻表表項(xiàng)總數(shù)lbyte。3) 消息隊(duì)列發(fā)送時(shí)刻表0~128字節(jié)。每個(gè)表項(xiàng)包括兩個(gè)字段發(fā)送 時(shí)刻和發(fā)送信道。其中的發(fā)送時(shí)刻占3byte,發(fā)送信道占l個(gè)byte。發(fā)送時(shí) 刻表包含了消息隊(duì)列各個(gè)消息包的發(fā)送時(shí)刻,用相對(duì)于消息隊(duì)列首個(gè)消息包 發(fā)送時(shí)刻的偏移值表示。偏移值的單位即一個(gè)時(shí)間段,該時(shí)間段的長(zhǎng)度在自 組網(wǎng)中所有節(jié)點(diǎn)都是一致的。以上消息發(fā)送信息表結(jié)構(gòu)的幀結(jié)構(gòu)不是唯一的,只要能夠確定發(fā)送隊(duì)列 中各個(gè)消息包的發(fā)送時(shí)刻和信道即可。如可以直接寫入各個(gè)消息包的發(fā)送時(shí)刻。略去總項(xiàng)數(shù),而以一特寫的符號(hào)來標(biāo)i己表項(xiàng)結(jié)束等等。周邊節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu),用來存放該節(jié)點(diǎn)所知道的別的節(jié)點(diǎn)準(zhǔn)備 發(fā)送的消息的發(fā)送時(shí)刻。這個(gè)表結(jié)構(gòu)比本節(jié)點(diǎn)的多出 一個(gè)MAC地址的字段, 即包括如下字段1) MAC地址(6 byte);2) 消息隊(duì)列首個(gè)消息包的發(fā)送時(shí)刻;3) 消息發(fā)送時(shí)刻表表項(xiàng)總數(shù);4) 消息隊(duì)列發(fā)送時(shí)刻表。應(yīng)當(dāng)注意的是,這里的周邊節(jié)點(diǎn)并非一定為當(dāng)前的相鄰節(jié)點(diǎn),也可以是 節(jié)點(diǎn)保存了其信息的以前的相鄰節(jié)點(diǎn)。本地節(jié)點(diǎn)維護(hù)上述的表結(jié)構(gòu)來緩存周 邊節(jié)點(diǎn)的消息發(fā)送時(shí)刻表,這樣便于將自己消息的發(fā)送時(shí)間安排在一個(gè)和別 的相鄰節(jié)點(diǎn)不容易沖突的時(shí)刻。如此安排有利于進(jìn)一步減少自組網(wǎng)內(nèi)各個(gè)節(jié) 點(diǎn)之間傳遞數(shù)據(jù)引起的碰撞。以上內(nèi)容中的幀類型、消息ID、源地址、消息內(nèi)容長(zhǎng)度和消息內(nèi)容是 由創(chuàng)建該消息的節(jié)點(diǎn)(圖形界面模塊)填寫的,在轉(zhuǎn)發(fā)過程中不做處理。而 相鄰節(jié)點(diǎn)數(shù)、緩存地址個(gè)數(shù)、已經(jīng)過節(jié)點(diǎn)地址和相鄰節(jié)點(diǎn)地址、本節(jié)點(diǎn)及周 邊節(jié)點(diǎn)的消息發(fā)送信息表結(jié)構(gòu)由發(fā)送該消息包的消息轉(zhuǎn)發(fā)模塊進(jìn)行填寫或 更新。圖4是消息廣播的流程圖,包括以下步驟步驟IIO,用戶編輯好消息后,圖形界面模塊將編輯好的消息傳遞給消 息隊(duì)列處理模塊;或者,消息隊(duì)列處理模塊接收到消息接收模塊傳遞來的消 息包;步驟120,根據(jù)排序規(guī)則將消息包放入消息隊(duì)列,確定其發(fā)送時(shí)間段(用 發(fā)送時(shí)刻表示)和發(fā)送信道(以下也稱為消息包預(yù)定的信道),并更新緩存 在本地的本節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu);本實(shí)施例將消息分兩個(gè)優(yōu)先級(jí)原創(chuàng)級(jí)和轉(zhuǎn)發(fā)級(jí),原創(chuàng)級(jí)即用戶自己創(chuàng) 建的消息,原創(chuàng)級(jí)比轉(zhuǎn)發(fā)級(jí)高。但該優(yōu)先級(jí)的分類僅為一個(gè)示例,也可以根 據(jù)內(nèi)容的緊急程度來分優(yōu)先級(jí),分出的類別也不局限亍2秤。在該步將消息包放入消息隊(duì)列時(shí)遵循如下的排序規(guī)則a) 同一優(yōu)先級(jí)的消息包按照時(shí)間順序來決定消息在隊(duì)列中的位置;b) 高優(yōu)先級(jí)的消息包可以插入到低先級(jí)的消息包之前,使原創(chuàng)級(jí)的消 息包排到盡可能靠前的位置。本實(shí)施例在插入時(shí),還規(guī)定(可選)不能讓兩個(gè)高優(yōu)先級(jí)的消息包在 消息隊(duì)列中的位置相鄰,至少要間隔一個(gè)低優(yōu)先級(jí)的消息包。這樣是為了避 免終端停止轉(zhuǎn)發(fā)消息。如果不存在插隊(duì)問題,兩個(gè)高優(yōu)先級(jí)的消息包是可以 排在一起的。c) 對(duì)于要轉(zhuǎn)發(fā)的消息包,如果隊(duì)列中最后N個(gè)消息包的源地址相同而 新來的消息和它們的源地址不同,那么,新來的消息包可以插到隊(duì)列最后N-l個(gè)消息包前面。這樣,節(jié)點(diǎn)會(huì)優(yōu)先轉(zhuǎn)發(fā)那些來自很少發(fā)送消息的節(jié)點(diǎn)的 消息包。目的是為了均衡轉(zhuǎn)發(fā),避免大量帶寬被一個(gè)節(jié)點(diǎn)所占用。在其它實(shí)施例中,也可以筒單地采用按時(shí)間順序來排隊(duì)。或者在采用第 一條規(guī)則的基礎(chǔ)上,不采用第二和第三條規(guī)則,或者采用第二、第三條規(guī)則 中的一種或其它任意組合。在不能插隊(duì)時(shí),根據(jù)本地記錄的發(fā)送時(shí)刻占用情況(從本節(jié)點(diǎn)和周邊節(jié) 點(diǎn)的消息發(fā)送信息表結(jié)構(gòu)中獲取),將最靠前的空閑時(shí)刻作為其發(fā)送時(shí)間段 的起始時(shí)刻,并為其選擇發(fā)送信道??臻e時(shí)刻是指本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息 時(shí)刻表結(jié)構(gòu)中沒有占用的時(shí)間段的起始時(shí)刻。在可插隊(duì)時(shí),則根據(jù)其插入位置決定其發(fā)送時(shí)間段和信道。插入隊(duì)列的 消息包會(huì)占用緊挨其后的消息包的發(fā)送時(shí)刻和信道,而后者也會(huì)占用緊隨其 后的消息包的發(fā)送時(shí)刻,依此類推,直到消息隊(duì)列中最后一個(gè)消息包。對(duì)最 后一個(gè)消息包,重新根據(jù)發(fā)送時(shí)間段的占用情況,將最靠前的空閑時(shí)刻作為 其發(fā)送時(shí)間段的起始時(shí)刻。然后更新本節(jié)點(diǎn)的消息發(fā)送信息表結(jié)構(gòu)中的信息。802.11b/g下可以至少設(shè)置三個(gè)完全不重疊的信道,如信道1/6/11。如果所有節(jié)點(diǎn)同時(shí)使用同一個(gè)信道,干擾和碰撞的幾率肯定會(huì)非常大,但如菜能 夠充分利用相隔較遠(yuǎn)的信道頻鐠不重疊的特性,甚至更多,那么干擾能夠得 到很好的抑止,從而提高了 AD-HOC網(wǎng)絡(luò)的容量。因此本實(shí)施例中還進(jìn)行 信道切換的控制。該步中,不插隊(duì)時(shí)選擇發(fā)送信道時(shí)按照如下的方式進(jìn)行判斷消息包的 發(fā)送時(shí)間段是否要切換信道,即C-T是否大于等于S,如果沒有,就選擇 上一個(gè)消息包所采用的信道,否則就更換信道。其中,C表示該消息包的發(fā) 送時(shí)刻,T表示隊(duì)列中上一個(gè)不同信道的消息包的發(fā)送時(shí)刻,S表示當(dāng)前選 定的信道切換時(shí)間間隔。S值較佳在一組值或一取值范圍中隨機(jī)選取,如 5s,10s,15s, 20s,25s等,通過隨4/L選取可以進(jìn)一步避免相鄰節(jié)點(diǎn)的切換動(dòng)作 同步而總是切到同 一信道上。插隊(duì)時(shí),發(fā)送信道的選擇和調(diào)整已在上文描述,對(duì)于消息隊(duì)列中最后一 個(gè)消息包,也按以上不插隊(duì)時(shí)的方式重新選擇一個(gè)發(fā)送信道。步驟130,在前一消息包發(fā)送完成后,在下一個(gè)需要發(fā)送消息包的發(fā)送 時(shí)間段發(fā)送消息隊(duì)列最前面的消息包, 一次發(fā)送過程包括以下步驟,如圖5 所示S21,判斷本節(jié)點(diǎn)的當(dāng)前相鄰節(jié)點(diǎn)中有多少比例的節(jié)點(diǎn)與要轉(zhuǎn)發(fā)的消息 包中緩存的已經(jīng)過節(jié)點(diǎn)和/或相鄰節(jié)點(diǎn)相同,如該比例值超過(可以是大于 或大于等于)設(shè)定的閾值,不符合轉(zhuǎn)發(fā)條件,執(zhí)行步驟S26,否則符合轉(zhuǎn)發(fā) 條件,執(zhí)行步驟S22;同時(shí)考慮已經(jīng)過節(jié)點(diǎn)地址和相鄰節(jié)點(diǎn)地址時(shí),可以對(duì)兩個(gè)比例值加權(quán)后 再與所述閾值比較。閾值可以配置為50%或其它值。該步也可以直接判斷當(dāng)前相鄰節(jié)點(diǎn)中有多少個(gè)數(shù)的節(jié)點(diǎn)與要轉(zhuǎn)發(fā)的消 息包中緩存的已經(jīng)過節(jié)點(diǎn)和/或相鄰節(jié)點(diǎn)相同,如果超過設(shè)定的閾值則執(zhí)行 步驟S26,否則執(zhí)行步驟S22。522, 判斷要轉(zhuǎn)發(fā)的消息包預(yù)定的信道和當(dāng)前信道是否相同,如果不相 同,切換到預(yù)定信道后再執(zhí)行下一步,否則直接執(zhí)行下一步;523, 更新符合轉(zhuǎn)發(fā)條件的消息包中的相鄰節(jié)點(diǎn)信息和已到過節(jié)點(diǎn)信息;具體地,用本節(jié)點(diǎn)當(dāng)前的相鄰節(jié)點(diǎn)數(shù)、相鄰節(jié)點(diǎn)地址來更新消息包中相 應(yīng)緩存區(qū)中的數(shù)據(jù),寫入時(shí)按當(dāng)前相鄰節(jié)點(diǎn)的相鄰節(jié)點(diǎn)數(shù)的多少對(duì)相鄰節(jié)點(diǎn) 地址排序,相鄰節(jié)點(diǎn)數(shù)多的相鄰節(jié)點(diǎn)的地址排在前面。在該消息包中緩存的 已經(jīng)過節(jié)點(diǎn)不包括本節(jié)點(diǎn)時(shí),應(yīng)將本節(jié)點(diǎn)地址添加到該消息包中的已經(jīng)過節(jié) 點(diǎn)地址中。其中當(dāng)前的相鄰節(jié)點(diǎn)數(shù)和地址可以從本地的MAC地址表中獲取, 而相鄰節(jié)點(diǎn)的相鄰節(jié)點(diǎn)數(shù)以從該相鄰節(jié)點(diǎn)發(fā)來的最新的 一個(gè)消息包中讀取 的信息為準(zhǔn)。S24,根據(jù)本節(jié)點(diǎn)當(dāng)前保存的消息發(fā)送信息表結(jié)構(gòu)的數(shù)據(jù),更新消息包 中本節(jié)點(diǎn)的消息發(fā)送信息表結(jié)構(gòu);以上各步操作在本實(shí)施例由消息轉(zhuǎn)發(fā)模塊完成。S25,將該消息包交驅(qū)動(dòng)層廣播發(fā)送,如果發(fā)送失敗,執(zhí)行步驟S26, 如果發(fā)送成功,執(zhí)行步驟S27;在一個(gè)發(fā)送時(shí)間段內(nèi),消息發(fā)送的時(shí)機(jī)是隨機(jī)的,源節(jié)點(diǎn)將消息傳送到 一個(gè)目的節(jié)點(diǎn)之后休息相應(yīng)時(shí)間直到這個(gè)時(shí)間段結(jié)束,以讓別的節(jié)點(diǎn)也能在 這個(gè)時(shí)間段內(nèi)有機(jī)會(huì)發(fā)射,因?yàn)?02.11 MAC的接入機(jī)制不具有公平性,越 是搶不到信道的節(jié)點(diǎn)越難發(fā)射消息,所以需要應(yīng)用層來處理這一問題。時(shí)間 段的長(zhǎng)度對(duì)于每個(gè)消息包來說都是一樣的。S26,將該消息包放到消息隊(duì)列的末尾,重新尋找一個(gè)最靠前的空閑時(shí) 刻作為發(fā)送時(shí)刻,同時(shí),此消息包的下一個(gè)消息包的發(fā)送時(shí)刻可提前到此消 息包的發(fā)送時(shí)刻,然后馬上重新執(zhí)行S21。S27 ,更新本地緩存的本節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu)中的消息隊(duì)列首個(gè)消 息包的發(fā)送時(shí)刻,結(jié)束;從上述步驟可看出,本實(shí)施例在消息轉(zhuǎn)發(fā)的條件不滿足時(shí),不直接丟棄 此條消息,而是將被移動(dòng)節(jié)點(diǎn)緩存,以便在將來某個(gè)時(shí)刻繼續(xù)轉(zhuǎn)發(fā),因?yàn)榫W(wǎng) 絡(luò)的節(jié)點(diǎn)隨時(shí)隨地在更新,有可能當(dāng)移動(dòng)節(jié)點(diǎn)正想要轉(zhuǎn)發(fā)消息時(shí)發(fā)現(xiàn)周圍沒有相鄰節(jié)點(diǎn)或者周圍的相鄰節(jié)點(diǎn)都已經(jīng)收到過這一條消息。所以緩存下來是 希望消息能夠被帶到更多的移動(dòng)節(jié)點(diǎn)上。圖6示出了消息接收和顯示的流程,當(dāng)用戶參與自組網(wǎng)的便攜設(shè)備接收 到一條消息,從接收到顯示到屏幕上大致要經(jīng)歷如下的步驟步驟210,驅(qū)動(dòng)層從硬件中獲取消息包,傳遞給應(yīng)用層的消息接收模塊;步驟220,更新本地周邊節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu),包括在本地添加 消息包中發(fā)送節(jié)點(diǎn)的消息發(fā)送信息表結(jié)構(gòu)或更新已有的該節(jié)點(diǎn)的消息發(fā)送 信息表結(jié)構(gòu),同時(shí)更新消息包相鄰節(jié)點(diǎn)序列當(dāng)中,與接收節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的 消息發(fā)送信息表結(jié)構(gòu);先根據(jù)發(fā)送節(jié)點(diǎn)的地址查找本地緩存的周邊節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu), 如果找到發(fā)送節(jié)點(diǎn)的記錄,根據(jù)消息包中緩存的消息發(fā)送信息表結(jié)構(gòu)更新到 相應(yīng)的表項(xiàng)當(dāng)中;如果沒有找到且緩存中有足夠的空間,則在該緩存中創(chuàng)建 新的表結(jié)構(gòu)。在緩存已滿時(shí), 一般會(huì)刪除周邊節(jié)點(diǎn)中的非相鄰節(jié)點(diǎn)的表結(jié)構(gòu), 讓出空間來保留當(dāng)前相鄰節(jié)點(diǎn)的表結(jié)構(gòu)。消息接收模塊接收到消息包之后還會(huì)根據(jù)消息包中的相鄰節(jié)點(diǎn)及其先 后順序來更新存在本地的周邊節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu)。如果某個(gè)節(jié)點(diǎn)同時(shí) 屬于本節(jié)點(diǎn)相鄰節(jié)點(diǎn)和消息包中相鄰節(jié)點(diǎn)序列中的節(jié)點(diǎn),且該節(jié)點(diǎn)是消息包 中相鄰節(jié)點(diǎn)序列中排在第N位的節(jié)點(diǎn),則在周邊節(jié)點(diǎn)消息發(fā)送信息表結(jié)構(gòu) 該節(jié)點(diǎn)的表結(jié)構(gòu)中添加該消息包的發(fā)送時(shí)刻,該發(fā)送時(shí)刻為接收節(jié)點(diǎn)的第N 個(gè)空閑時(shí)刻。例如,如該節(jié)點(diǎn)為消息包中相鄰節(jié)點(diǎn)序列中排在最前面的節(jié)點(diǎn), 則將轉(zhuǎn)發(fā)此消息的時(shí)刻安排最靠前的空閑時(shí)刻上。步驟230,才艮據(jù)消息包中的相鄰節(jié)點(diǎn)信息(相鄰節(jié)點(diǎn)數(shù)及地址),在本 地緩存消息包發(fā)送節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息或更新已保存的該節(jié)點(diǎn)的相鄰節(jié)點(diǎn) 信息;在移動(dòng)節(jié)點(diǎn)的MAC表中,相鄰節(jié)點(diǎn)是在不斷刷新的,消息接收沖莫塊保 存的該節(jié)點(diǎn)地址及其相鄰節(jié)點(diǎn)數(shù)在相鄰節(jié)點(diǎn)刪除后,可以繼續(xù)保留。因?yàn)檫^ 一段時(shí)間該節(jié)點(diǎn)仍可能變?yōu)橄噜徑Y(jié)果,保存的相鄰節(jié)點(diǎn)數(shù)仍可作為消息包中36相鄰節(jié)點(diǎn)地址排序的參考。步驟240,判斷該消息包是否已在消息隊(duì)列中,如杲是,執(zhí)著步驟250, 否則,執(zhí)行步驟260;消息接收模塊是通過消息包中的消息ID和源地址來判斷消息包是否已 經(jīng)在消息隊(duì)列當(dāng)中,該兩者相同則屬于同 一 消息包。步驟250,將該消息包中的已經(jīng)過節(jié)點(diǎn)地址合并到消息隊(duì)列中相同消息 包緩存的已經(jīng)過節(jié)點(diǎn)地址當(dāng)中,丟棄收到的該消息包,結(jié)束;上述"合并"的含義是取兩者的并集,緩存的已經(jīng)過節(jié)點(diǎn)地址不區(qū)分到 達(dá)的先后順序。步驟260,將該消息包傳遞到消息隊(duì)列處理模塊進(jìn)行轉(zhuǎn)發(fā),并傳遞到消 息過濾一莫塊;步驟270,按照用戶設(shè)定的過濾規(guī)則檢查消息內(nèi)容,如可以顯示,則將 消息顯示在用戶圖形界面上供用戶瀏覽,否則,不顯示,結(jié)束。在以上實(shí)施例的基礎(chǔ)上,本發(fā)明還有許多的變換方式首先,在其它的實(shí)施例中,對(duì)于上述提到的選擇一個(gè)合理的轉(zhuǎn)發(fā)時(shí)機(jī)以 節(jié)約系統(tǒng)帶寬的4種處理方式,以及為實(shí)現(xiàn)負(fù)栽均衡采用的2種處理方式。 可以只采用其中的一種,或者任意多種的組合。和現(xiàn)有技術(shù)相比均具有實(shí)質(zhì) 性的特點(diǎn)和技術(shù)效果,均可達(dá)到本發(fā)明的基本目的。另一點(diǎn)要說明的是,以上的模塊劃分是邏輯上的,并不局限于某一種固 定的劃分方式,特別在方法中,雖然上述流程提到了相應(yīng)的模塊,但也完全 可以忽略某種固定劃分出來的模塊,只要能完成相應(yīng)的操作即可。在另一實(shí)施例中,對(duì)于發(fā)送時(shí)機(jī)的選擇以及休眠時(shí)間,可以采用另一種 處理方式,即將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)數(shù)和發(fā)送該消息包的相鄰節(jié)點(diǎn)的相鄰節(jié)點(diǎn) 數(shù)相加,假定和為P,消息轉(zhuǎn)發(fā)模塊從1 P中隨機(jī)選擇一個(gè)值N,在從當(dāng)前 時(shí)間單位起的第N個(gè)時(shí)間單位發(fā)送該消息包,發(fā)送完后再休眠P-N個(gè)時(shí)間 單位。這種方式也可以在一定程度上減少?zèng)_突的概率。和實(shí)施例中的方式相 比,不需要在消息包中保存相鄰節(jié)點(diǎn)地址,也不需要由消息接收模塊從消息包中提取和保存其相鄰節(jié)點(diǎn)數(shù)的信息來對(duì)相鄰節(jié)點(diǎn)進(jìn)行排序,而只需要根據(jù) 要轉(zhuǎn)發(fā)消息包中原有的相鄰節(jié)點(diǎn)數(shù)進(jìn)行計(jì)算即可。此外,本發(fā)明方法不局限于采用何種底層協(xié)議,對(duì)于其他物理標(biāo)準(zhǔn)的Ad Hoc網(wǎng)絡(luò),比如HomeRF/Bluetooth/Zigbee,本發(fā)明也可以適用。
權(quán)利要求
1. 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣播和接收方法,在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息,其中消息廣播過程包括以下步驟(a)節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,在前一消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包準(zhǔn)備發(fā)送;(b)將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的相鄰節(jié)點(diǎn)進(jìn)行比較,當(dāng)相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),更新該消息包中緩存的相鄰節(jié)點(diǎn)信息,執(zhí)行下一步;(c)將該消息包交驅(qū)動(dòng)層廣播發(fā)送;在消息接收過程包括以下步驟(A)節(jié)點(diǎn)收到消息包;(B)根據(jù)該消息包中的相鄰節(jié)點(diǎn)信息,在本地緩存消息包發(fā)送節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息或更新已保存的該節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息;(C)對(duì)該消息包進(jìn)行轉(zhuǎn)發(fā)和顯示處理。
2、 如權(quán)利要求1所述的方法,其特征在于在消息包結(jié)構(gòu)中還包含發(fā)送該消息包的節(jié)點(diǎn)的消息發(fā)送信息,而在節(jié)點(diǎn) 上緩存本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,本節(jié)點(diǎn)的消息發(fā)送信息中包含該節(jié)點(diǎn)消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信息,周邊節(jié)點(diǎn)的消息發(fā)送信 息中包含相應(yīng)節(jié)點(diǎn)的標(biāo)識(shí)及其消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信 息;節(jié)點(diǎn)在一個(gè)時(shí)間段發(fā)送一個(gè)消息包,時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一設(shè)定的;步驟(a)將消息包放入消息隊(duì)列時(shí),按以下方法選定其發(fā)送時(shí)間段, 然后更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息;如不插隊(duì),查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時(shí)間段作為其發(fā)送時(shí)間段;如插隊(duì)時(shí),插入隊(duì)列的消息包占用緊挨其后的消息包的發(fā)送時(shí)間段,而 后者占用緊隨其后的消息包的發(fā)送時(shí)間段,依此類推,對(duì)消息隊(duì)列的最后一個(gè)消息包,則重新查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的空閑時(shí)間段作為其發(fā)送時(shí)間段;步驟(c)中是在預(yù)定的發(fā)送時(shí)間段內(nèi)將該消息包交驅(qū)動(dòng)層廣播發(fā)送;步驟(B)還根據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點(diǎn)的消息發(fā)送信息或更新已有的該節(jié)點(diǎn)的消息發(fā)送信息。
3、 如權(quán)利要求4所述的方法,其特征在于所述相鄰節(jié)點(diǎn)信息包括相鄰節(jié)點(diǎn)的個(gè)數(shù)信息和相鄰節(jié)點(diǎn)的標(biāo)識(shí)信息;步驟(b)更新該消息包中緩存的相鄰節(jié)點(diǎn)時(shí),是按本地緩存的相鄰節(jié) 點(diǎn)的相鄰節(jié)點(diǎn)個(gè)數(shù)的多少4姿序排列,得到相鄰節(jié)點(diǎn)序列;步驟(B)還根據(jù)消息包中包含的信息,同時(shí)更新本地緩存的消息包相 鄰節(jié)點(diǎn)序列當(dāng)中與接收節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的消息發(fā)送信息,如該節(jié)點(diǎn)是消息包 相鄰節(jié)點(diǎn)序列中相鄰節(jié)點(diǎn)個(gè)數(shù)排在第N位的節(jié)點(diǎn),則在該節(jié)點(diǎn)的消息發(fā)送 信息中添加該消息包的發(fā)送時(shí)間段信息,該發(fā)送時(shí)間段為接收節(jié)點(diǎn)的第N 個(gè)空閑時(shí)間段。
4、 如權(quán)利要求4所述的方法,其特征在于所述消息包的發(fā)送時(shí)間段信息為時(shí)間段的起始時(shí)刻,稱為發(fā)送時(shí)刻;所 述消息發(fā)送信息包括a)消息隊(duì)列首個(gè)消息包的發(fā)送時(shí)刻;b)消息發(fā)送時(shí)刻 表表項(xiàng)總數(shù);c)消息隊(duì)列發(fā)送時(shí)刻表,每一表項(xiàng)記錄了消息隊(duì)列中一個(gè)消 息包的發(fā)送時(shí)刻。
5、 如權(quán)利要求4所述的方法,其特征在于所述消息發(fā)送信息中還包括各個(gè)消息包的發(fā)送信道信息;步驟(a)將消息包放入消息隊(duì)列時(shí),還按以下方法選擇其發(fā)送信道如不插隊(duì),判斷C-T是否大于等于S,如果沒有,就選擇上一個(gè)消息 包所采用的信道,否則就更換為另一個(gè)信道;其中,C表示該消息包的發(fā)送 時(shí)刻,T表示隊(duì)列中上一個(gè)不同信道的消息包的發(fā)送時(shí)刻,S表示當(dāng)前選定 或隨機(jī)選定的信道切換時(shí)間間隔;如插隊(duì),則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對(duì)消息隊(duì)列的最后一個(gè)消息包,按上述不插隊(duì)時(shí)的相同方式來選定一個(gè)發(fā)送信道;步驟(c)發(fā)送消息包時(shí),先判斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當(dāng)前信道 是否相同,如果不相同,先切換到預(yù)定信道后,再進(jìn)行后續(xù)發(fā)送步驟。
6、 如權(quán)利要求l所述的方法,其特征在于步驟(c)在發(fā)送時(shí)間段中,節(jié)點(diǎn)是隨機(jī)選擇一個(gè)時(shí)機(jī)發(fā)送所述消息包, 如果發(fā)送成功,需更新本地緩存的本節(jié)點(diǎn)消息發(fā)送信息中的消息隊(duì)列首個(gè)消 息包的發(fā)送時(shí)刻。
7、 如權(quán)利要求1所述的方法,其特征在于在消息包結(jié)構(gòu)中還包含該消息包的已經(jīng)過節(jié)點(diǎn)信息;步驟(b)中還將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的已經(jīng)過節(jié)點(diǎn)進(jìn)行 比較,對(duì)得到的兩個(gè)比例值或個(gè)數(shù)加權(quán)后再與設(shè)定閾值比較,如未超過設(shè)定 閾值時(shí),符合轉(zhuǎn)發(fā)條件,在消息包中的已經(jīng)過節(jié)點(diǎn)不包括本節(jié)點(diǎn)時(shí),將本節(jié) 點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中,執(zhí)行步驟(c)。
8、 如權(quán)利要求l所述的方法,其特征在于步驟(B )還判斷消息隊(duì)列中是否存在消息標(biāo)識(shí)和源地址都與收到的消 息 包相同的消息包如果存在,在消息包結(jié)構(gòu)中包含該消息包的已經(jīng)過節(jié)點(diǎn)信息時(shí),將該消 息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)合并到消息隊(duì)列中相同消息包緩存的已經(jīng)過節(jié)點(diǎn) 標(biāo)識(shí)當(dāng)中,然后丟棄收到的該消息包,否則直接丟棄;如果不存在,執(zhí)行步驟(C)。
9、 如權(quán)利要求1或7所述的方法,其特征在于步驟(b)如超過設(shè)定閾值,判斷消息包不符合轉(zhuǎn)發(fā)條件時(shí),和/或步驟(c ) 發(fā)送失敗時(shí),將所述消息包重新放入消息隊(duì)列的末尾。
10、 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣播方法,在消息包結(jié)構(gòu)中包含已經(jīng)過 節(jié)點(diǎn)的信息,其中消息廣播過程包括以下步驟(a)節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,在前一消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包準(zhǔn)備發(fā)送;(b) 將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的已到過節(jié)點(diǎn)進(jìn)行比較,當(dāng) 相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),在消息包中的已經(jīng)過節(jié)點(diǎn)不包括 本節(jié)點(diǎn)時(shí),將本節(jié)點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中,執(zhí)行下一步;(c) 將該消息包交驅(qū)動(dòng)層廣播發(fā)送。
11、 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣播和接收方法,其中消息接收過程包才舌以下步驟(A)節(jié)點(diǎn)收到消息包;(B )判斷消息隊(duì)列中是否存在消息標(biāo)識(shí)和源地址都與收到的消息包相 同的消息包,如果存在,丟棄收到的該消息包,如果不存在,執(zhí)行步驟(C)。(C)對(duì)該消息包進(jìn)行轉(zhuǎn)發(fā)和顯示處理。
12、 如權(quán)利要求ll的方法,其特征在于在消息包結(jié)構(gòu)中還包含該消息包的已經(jīng)過節(jié)點(diǎn)信息;消息廣播過程包括 以下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,在前一 消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包準(zhǔn)備發(fā)送;(b) 將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的已到過節(jié)點(diǎn)進(jìn)行比較,當(dāng) 相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),在消息包中的已經(jīng)過節(jié)點(diǎn)不包括 本節(jié)點(diǎn)時(shí),將本節(jié)點(diǎn)標(biāo)識(shí)添加到該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)中,執(zhí)行下一 步;(c) 將該消息包交驅(qū)動(dòng)層廣播發(fā)送;步驟(B)中,如消息隊(duì)列中是否存在消息標(biāo)識(shí)和源地址都與收到的消 息包相同的消息包,先將該消息包中的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)合并到消息隊(duì)列中相 同消息包緩存的已經(jīng)過節(jié)點(diǎn)標(biāo)識(shí)當(dāng)中,再丟棄收到的該消息包。
13、 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣^"方法,其特征在于,在消息包不符 合轉(zhuǎn)發(fā)條件時(shí),將所述消息包重新放入消息隊(duì)列的末尾準(zhǔn)備發(fā)送。
14、 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣4番和接收方法,在消息包結(jié)構(gòu)中包含 發(fā)送該消息包的節(jié)點(diǎn)的消息發(fā)送信息,而在節(jié)點(diǎn)上緩存本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的 消息發(fā)送信息,本節(jié)點(diǎn)的消息發(fā)送信息中包食該節(jié)點(diǎn)消息發(fā)送隊(duì)列中備個(gè)消 息包的發(fā)送時(shí)間段信息,周邊節(jié)點(diǎn)的消息發(fā)送信息中包含相應(yīng)節(jié)點(diǎn)的標(biāo)識(shí)及 其消息發(fā)送隊(duì)列中各個(gè)消息包的發(fā)送時(shí)間段信息;節(jié)點(diǎn)在一個(gè)時(shí)間段發(fā)送一 個(gè)消息包,時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一設(shè)定的;其中消息廣纟番過程包括以下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,按以下 方法選定其發(fā)送時(shí)間段,然后更新緩存在本地的本節(jié)點(diǎn)消息發(fā)送信息;如不插隊(duì),查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的沒有被 占用的空閑時(shí)間段作為其發(fā)送時(shí)間段;如插隊(duì)時(shí),插入隊(duì)列的消息包占用緊挨其后的消息包的發(fā)送時(shí)間段,而 后者占用緊隨其后的消息包的發(fā)送時(shí)間段,依此類推,對(duì)消息隊(duì)列的最后一 個(gè)消息包,則重新查找本節(jié)點(diǎn)和周邊節(jié)點(diǎn)的消息發(fā)送信息,將最靠前的空閑 時(shí)間段作為其發(fā)送時(shí)間段;(b) 在前一消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包;(c) 在預(yù)定的發(fā)送時(shí)間段內(nèi)將該消息包交驅(qū)動(dòng)層廣播隨機(jī)發(fā)送; 在消息接收過程包^"以下步驟(A)節(jié)點(diǎn)收到消息包;(B )根據(jù)消息包中包含的信息,在本地添加消息包中發(fā)送節(jié)點(diǎn)的消息 發(fā)送信息或更新已有的該節(jié)點(diǎn)的消息發(fā)送信息;(C)對(duì)該消息包進(jìn)行轉(zhuǎn)發(fā)和顯示處理。
15、 如權(quán)利要求14所述的方法,其特征在于在消息包結(jié)構(gòu)中還包含發(fā)送該消息包的節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息,包括相鄰 節(jié)點(diǎn)的個(gè)數(shù)信息和相鄰節(jié)點(diǎn)的標(biāo)識(shí)信息;步驟(b)更新所述消息包中緩存的相鄰節(jié)點(diǎn)時(shí),是按本地緩存的相鄰 節(jié)點(diǎn)的相鄰節(jié)點(diǎn)個(gè)數(shù)的多少按序排列,得到相鄰節(jié)點(diǎn)序列;步驟(B)還根據(jù)消息包中包含的信息,同時(shí)更新本地緩存的消息包相 鄰節(jié)點(diǎn)序列當(dāng)中與接收節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的消息發(fā)送信息,如該節(jié)點(diǎn)是消息包 相鄰節(jié)點(diǎn)序列中相鄰節(jié)點(diǎn)個(gè)數(shù)排在第N位的節(jié)點(diǎn),則在該節(jié)點(diǎn)的消息發(fā)送 信息中添加該消息包的發(fā)送時(shí)間段信息,該發(fā)送時(shí)間段為接收節(jié)點(diǎn)的第N 個(gè)空閑時(shí)間l殳。
16、 一種移動(dòng)無(wú)線自組網(wǎng)的消息廣播方法,節(jié)點(diǎn)在一個(gè)時(shí)間段發(fā)送一個(gè) 消息包,時(shí)間段長(zhǎng)度對(duì)各節(jié)點(diǎn)是統(tǒng)一設(shè)定的,消息包結(jié)構(gòu)中包括各個(gè)消息包 的發(fā)送信道信息,該方法包括以下步驟(a) 節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,按以下方法選擇其發(fā)送信道,然后更新緩存的消息隊(duì)列中各個(gè)消息包的發(fā)送信道信 臺(tái) 如不插隊(duì),判斷C-T是否大于等于S,如果沒有,就選擇上一個(gè)消息 包所采用的信道,否則就更換為另一個(gè)信道;其中,C表示該消息包發(fā)送時(shí) 間段的起始時(shí)刻,T表示隊(duì)列中上一個(gè)不同信道的消息包發(fā)送時(shí)間段的起始 時(shí)刻,S表示當(dāng)前選定或隨機(jī)選定的信道切換時(shí)間間隔;如插隊(duì),則以緊挨其后的消息包的發(fā)送信道為其發(fā)送信道,而后者也以 緊隨其后的消息包的發(fā)送信道為其發(fā)送信道,依此類推,對(duì)消息隊(duì)列的最后 一個(gè)消息包,按上述不插隊(duì)時(shí)的相同方式來選定一個(gè)發(fā)送信道;(b) 在前一消息包發(fā)送完成后,取出消息隊(duì)列中最前面的消息包,判 斷要轉(zhuǎn)發(fā)消息包預(yù)定的信道和當(dāng)前信道是否相同,如果不相同,先切換到預(yù) 定信道,執(zhí)行下一步,否則直接執(zhí)行下一步;(c) 將該消息包交驅(qū)動(dòng)層廣播發(fā)送。
全文摘要
一種移動(dòng)無(wú)線自組網(wǎng)消息廣播和接收的方法及所用終端節(jié)點(diǎn),在消息包結(jié)構(gòu)中包含發(fā)送該消息包的節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息,廣播時(shí),節(jié)點(diǎn)將本地創(chuàng)建的消息包或收到的消息包放入消息隊(duì)列,取出最前面的消息包準(zhǔn)備發(fā)送;將本節(jié)點(diǎn)的相鄰節(jié)點(diǎn)與該消息包緩存的相鄰節(jié)點(diǎn)進(jìn)行比較,當(dāng)相同節(jié)點(diǎn)的比例或個(gè)數(shù)未超過設(shè)定閾值時(shí),更新該消息包中緩存的相鄰節(jié)點(diǎn)信息,將該消息包交驅(qū)動(dòng)層廣播發(fā)送;節(jié)點(diǎn)收到消息包后,根據(jù)包中的相鄰節(jié)點(diǎn)信息在本地緩存消息包發(fā)送節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息或更新已保存的該節(jié)點(diǎn)的相鄰節(jié)點(diǎn)信息;對(duì)該消息包進(jìn)行轉(zhuǎn)發(fā)和顯示處理。本發(fā)明可以將用戶的消息傳達(dá)到移動(dòng)無(wú)線自組網(wǎng)中所有的終端,并盡量避免發(fā)送沖突和廣播風(fēng)暴。
文檔編號(hào)H04Q7/22GK101242564SQ200710063588
公開日2008年8月13日 申請(qǐng)日期2007年2月5日 優(yōu)先權(quán)日2007年2月5日
發(fā)明者蕊 田 申請(qǐng)人:蕊 田
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
清河县| 博野县| 横山县| 仲巴县| 道真| 黄山市| 西充县| 内黄县| 远安县| 九寨沟县| 巴里| 兴业县| 东辽县| 资溪县| 鹿邑县| 开远市| 沙洋县| 新和县| 湖南省| 子长县| 巫溪县| 石林| 镇雄县| 天台县| 个旧市| 青田县| 遵化市| 监利县| 板桥市| 玉溪市| 金平| 东山县| 易门县| 微山县| 东兴市| 平顶山市| 双鸭山市| 灯塔市| 新乐市| 荥经县| 兴城市|