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

一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法

文檔序號:7600950閱讀:197來源:國知局
專利名稱:一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法
技術(shù)領(lǐng)域
本發(fā)明涉及信令傳輸技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法。
背景技術(shù)
當(dāng)前,隨著通信技術(shù)的不斷發(fā)展,用戶數(shù)據(jù)包協(xié)議(UDP)已經(jīng)越來越多地應(yīng)用于數(shù)據(jù)傳輸過程中。在即按即說(PTT)通信中,就廣泛采用了UDP實(shí)現(xiàn)數(shù)據(jù)傳輸。
通過PTT通信,可以在手機(jī)用戶之間實(shí)現(xiàn)類似對講機(jī)一樣的通話,因此,也稱為“一鍵通”。鑒于目前通用無線分組業(yè)務(wù)(GPRS)網(wǎng)絡(luò)對網(wǎng)絡(luò)帶寬不能提供足夠的保證,因此,在PTT通信中,為了提高話音的服務(wù)質(zhì)量(QOS),采用UDP作為傳輸層協(xié)議進(jìn)行數(shù)據(jù)傳輸,而不再使用傳輸控制協(xié)議(TCP)。然而,UDP是一種面向無線連接且不提供可靠傳輸?shù)膮f(xié)議,采用該協(xié)議進(jìn)行數(shù)據(jù)傳輸,任何一個(gè)數(shù)據(jù)包都可能因?yàn)榫W(wǎng)絡(luò)擁塞而導(dǎo)致丟包。在PTT通信時(shí),PTT客戶端和PTT服務(wù)器交互的數(shù)據(jù)包中,最重要的數(shù)據(jù)包就是信令消息數(shù)據(jù)包,例如,創(chuàng)建PTT信令、加入PTT信令、申請發(fā)言信令、取消發(fā)言信令等,這些數(shù)據(jù)包的丟失將會直接影響到正常的PTT通話流程,因此,需要提供一種信令消息重發(fā)的方法,以保證PTT通信過程中信令消息數(shù)據(jù)包傳輸?shù)目煽啃浴?br> 在現(xiàn)有技術(shù)中,提供了一種簡單的信令消息重發(fā)的方法。在該方法中,PTT客戶端將每條信令消息均向PTT服務(wù)器連續(xù)發(fā)送多次,從而通過該連續(xù)多次的發(fā)送,避免由于網(wǎng)絡(luò)擁塞所造成的信令消息數(shù)據(jù)包的丟失。該方法雖然能夠保證信令消息數(shù)據(jù)包傳輸?shù)目煽啃?,但是,具有如下缺點(diǎn)
(1)浪費(fèi)網(wǎng)絡(luò)帶寬采用現(xiàn)有技術(shù)所提供的方法,PTT客戶端會按照預(yù)先設(shè)定的次數(shù)向PTT服務(wù)器重復(fù)發(fā)送信令消息,即使PTT服務(wù)器成功收到了PTT客戶端所發(fā)送的信令消息,并向PTT客戶端返回表明發(fā)送成功的回應(yīng)消息,PTT客戶端仍然會重復(fù)進(jìn)行信令消息的發(fā)送,直至達(dá)到預(yù)先設(shè)定的次數(shù);由此,該簡單的重復(fù)發(fā)送,會導(dǎo)致PTT客戶端與PTT服務(wù)器之間網(wǎng)絡(luò)帶寬的不必要浪費(fèi);(2)導(dǎo)致PTT客戶端進(jìn)行重復(fù)處理在現(xiàn)有技術(shù)所提供的方法中,PTT客戶端向PTT服務(wù)器重發(fā)信令消息,PTT服務(wù)器如果成功收到該信令消息,則向PTT客戶端返回該信令消息的回應(yīng)消息,PTT客戶端收到該回應(yīng)消息后,根據(jù)該回應(yīng)消息將PTT客戶端當(dāng)前所處的狀態(tài)改變?yōu)樵摶貞?yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作;由于PTT客戶端只是簡單地向PTT服務(wù)器重發(fā)信令消息,因此,PTT客戶端會相應(yīng)地收到多個(gè)與重發(fā)的信令消息相對應(yīng)的回應(yīng)消息,并根據(jù)該回應(yīng)消息多次執(zhí)行相同的操作,該多次操作顯然為多余的重復(fù)操作,并會由于該重復(fù)操作影響PTT客戶端的處理性能。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法,該方法能夠避免網(wǎng)絡(luò)帶寬的浪費(fèi),并能使得PTT客戶端不再進(jìn)行多余的重復(fù)操作,保證PTT客戶端的處理性能。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法,該方法包括步驟a即按即說(PTT)客戶端向PTT服務(wù)器發(fā)送待發(fā)送信令消息集合中的各個(gè)信令消息;步驟bPTT客戶端從PTT服務(wù)器接收所發(fā)送的信令消息的回應(yīng)消息,并獲取PTT客戶端當(dāng)前狀態(tài);步驟c判斷PTT客戶端是否收到用于將PTT客戶端當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息,如果是,則執(zhí)行步驟d,否則,返回步驟a;步驟d將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作,同時(shí),將該回應(yīng)消息所對應(yīng)的信令消息從待發(fā)送信令消息集合中刪除,返回步驟a,直至信令消息傳輸完畢。
其中,所述待發(fā)送信令消息集合為消息隊(duì)列,該消息隊(duì)列中保存有各個(gè)待發(fā)送信令消息所對應(yīng)的消息節(jié)點(diǎn);步驟d所述將信令消息從待發(fā)送信令消息集合中刪除為將所述信令消息所對應(yīng)的消息節(jié)點(diǎn)從消息隊(duì)列中刪除。
其中,在步驟a中,PTT客戶端每發(fā)送一次各個(gè)信令消息之后,進(jìn)一步包括分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送次數(shù)是否已經(jīng)達(dá)到預(yù)先為該信令消息所設(shè)定的重發(fā)次數(shù),如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b。
其中,在步驟a中,PTT客戶端每發(fā)送一次各個(gè)信令消息之后,進(jìn)一步包括分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送時(shí)間是否已經(jīng)超過了預(yù)先為該信令消息所設(shè)定的發(fā)送有效時(shí)間,如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b。
其中,在步驟a中,PTT客戶端每發(fā)送一次各個(gè)信令消息之后,進(jìn)一步包括分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送次數(shù)是否已經(jīng)達(dá)到預(yù)先為該信令消息所設(shè)定的重發(fā)次數(shù),如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b;和,分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送時(shí)間是否已經(jīng)超過了預(yù)先為該信令消息所設(shè)定的發(fā)送有效時(shí)間,如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b。
其中,步驟c所述判斷PTT客戶端是否收到用于將PTT客戶端當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息為根據(jù)步驟b中所述回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系,判斷各個(gè)回應(yīng)消息中是否包括將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息。
其中,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括在PTT客戶端當(dāng)前狀態(tài)為初始化狀態(tài)時(shí),判斷是否收到命令名為AckCreatePTT或者AckJoinPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckCreatePTT或者AckJoinPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榧尤霠顟B(tài),并執(zhí)行與加入狀態(tài)相對應(yīng)的操作。
其中,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括在PTT客戶端當(dāng)前狀態(tài)為加入狀態(tài)時(shí),判斷是否收到命令名為AckSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榘l(fā)言狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài)。
其中,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括
在PTT客戶端當(dāng)前狀態(tài)為發(fā)言狀態(tài)時(shí),判斷是否收到命令名為AckStopSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckStopSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殪o音狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài)。
其中,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括在PTT客戶端當(dāng)前狀態(tài)為靜音狀態(tài)時(shí),判斷是否收到命令名為AckSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榘l(fā)言狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài)。
其中,步驟d中,所述將回應(yīng)消息所對應(yīng)的信令消息從待發(fā)送信令消息集合中刪除為根據(jù)所述回應(yīng)消息的命令名在待發(fā)送信令消息集合中查找得到與該回應(yīng)消息相對應(yīng)的信令消息,然后將該信令消息從待發(fā)送信令消息集合中刪除。
可見,在本發(fā)明中,PTT客戶端向PTT服務(wù)器重發(fā)信令消息,PTT服務(wù)器成功收到該信令消息后,向PTT客戶端返回該信令消息的回應(yīng)消息,PTT客戶端收到該回應(yīng)消息后,則終止與該回應(yīng)消息對應(yīng)的信令消息的重發(fā),從而避免網(wǎng)絡(luò)帶寬的浪費(fèi);在本發(fā)明中,PTT客戶端接收到信令消息的回應(yīng)消息后,判斷該回應(yīng)消息是否為PTT客戶端當(dāng)前所處狀態(tài)的下一狀態(tài)對應(yīng)的回應(yīng)消息,如果是,則根據(jù)該回應(yīng)消息,將PTT客戶端當(dāng)前所處狀態(tài)改變?yōu)樵摶貞?yīng)消息對應(yīng)的狀態(tài),否則,不做處理,依此方式接收回應(yīng)消息并進(jìn)行相應(yīng)處理,能夠使得PTT客戶端不再由于接收到多個(gè)回應(yīng)消息而執(zhí)行多余的重復(fù)操作,有利于保證PTT客戶端的處理性能。


圖1為實(shí)現(xiàn)本發(fā)明的流程圖。
圖2為PTT客戶端狀態(tài)關(guān)系示意圖。
具體實(shí)施例方式
本發(fā)明為一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法,該方法在信令消息的重發(fā)過程中,判斷PTT客戶端是否收到用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息所對應(yīng)的回應(yīng)消息,如果不是,則不執(zhí)行相應(yīng)操作,如果是,則根據(jù)該回應(yīng)消息將PTT客戶端的當(dāng)前狀態(tài)改變?yōu)榕c該回應(yīng)消息對應(yīng)的狀態(tài)并執(zhí)行相應(yīng)操作,同時(shí)將該回應(yīng)消息對應(yīng)的信令消息從待發(fā)送信令消息集合中刪除,從而避免由于簡單重發(fā)而造成的網(wǎng)絡(luò)帶寬浪費(fèi),以及由于PTT客戶端多次執(zhí)行相同操作而造成的處理性能下降問題。
下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)描述。
參見圖1,實(shí)現(xiàn)本發(fā)明需要以下步驟步驟101PTT客戶端向PTT服務(wù)器發(fā)送待發(fā)送信令消息集合中的各個(gè)信令消息;步驟102PTT客戶端從PTT服務(wù)器接收所發(fā)送的信令消息的回應(yīng)消息,并獲取PTT客戶端當(dāng)前狀態(tài);步驟103判斷PTT客戶端是否收到用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息,如果是,則執(zhí)行步驟104,否則,返回步驟101;
步驟104將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟E103所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作,同時(shí),將該回應(yīng)消息所對應(yīng)的信令消息從待發(fā)送信令消息集合中刪除,返回步驟101,直至信令消息傳輸完畢。
下面結(jié)合具體實(shí)例,對上述步驟的具體實(shí)現(xiàn)進(jìn)行詳細(xì)描述在以下具體實(shí)例中,為每個(gè)信令消息構(gòu)建一個(gè)消息節(jié)點(diǎn),該消息節(jié)點(diǎn)中至少保存有該信令消息,各個(gè)消息節(jié)點(diǎn)保存在消息隊(duì)列中,形成所述的待發(fā)送信令消息集合,對于將信令消息從待發(fā)送信令消息集合中刪除這一步驟,則可通過將信令消息所對應(yīng)的消息節(jié)點(diǎn)從消息隊(duì)列中刪除實(shí)現(xiàn);在本發(fā)明其它實(shí)施例中,也可采用其它形式形成待發(fā)送信令消息集合,并不影響本發(fā)明的實(shí)現(xiàn)。
(一)步驟101的具體實(shí)現(xiàn)由于各個(gè)信令消息分別具有各自的重發(fā)次數(shù)限制,因此,本發(fā)明實(shí)施例中,在各個(gè)信令消息的屬性中分別預(yù)先設(shè)置重發(fā)次數(shù)以及當(dāng)前發(fā)送次數(shù),PTT客戶端每發(fā)送一次信令消息,則更新所發(fā)送信令消息的當(dāng)前發(fā)送次數(shù),判斷該次數(shù)是否達(dá)到重發(fā)次數(shù),如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟102,否則,直接執(zhí)行步驟102;如果各個(gè)信令消息分別具有各自的發(fā)送有效時(shí)間限制,則還需要在各個(gè)信令消息的屬性中分別預(yù)先設(shè)置發(fā)送有效時(shí)間以及當(dāng)前發(fā)送時(shí)間,PTT客戶端每發(fā)送一次信令消息,則更新所發(fā)送信令消息的當(dāng)前發(fā)送時(shí)間,判斷該時(shí)間是否已經(jīng)超過預(yù)先設(shè)定的發(fā)送有效時(shí)間,如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟102,否則,直接執(zhí)行步驟102;在本發(fā)明中,可以僅考慮重發(fā)次數(shù)的限制以及有效時(shí)間的限制中的一種,實(shí)現(xiàn)步驟101,也可全部考慮以上的兩種限制,實(shí)現(xiàn)步驟101;如果不考慮這兩種限制,則可僅按照常規(guī)方法,將待發(fā)送信令消息集合中的各個(gè)信令消息向PTT服務(wù)器發(fā)送,并不影響本發(fā)明的實(shí)現(xiàn);
(二)步驟102的具體實(shí)現(xiàn)PTT客戶端接收PTT服務(wù)器所返回的回應(yīng)消息,記錄各個(gè)回應(yīng)消息的命令名,并且,獲取PTT客戶端的當(dāng)前狀態(tài);其中,參見圖2,PTT客戶端的狀態(tài)包括初始化狀態(tài)、加入狀態(tài)、發(fā)言狀態(tài)、靜音狀態(tài)、以及離開狀態(tài),各個(gè)狀態(tài)之間的關(guān)系如圖2所示,具體為在初始化狀態(tài)下,PTT客戶端可以通過向PTT服務(wù)器發(fā)送CreatePTT命令和JoinPTT命令,將初始化狀態(tài)改變?yōu)榧尤霠顟B(tài);在加入狀態(tài)下,PTT客戶端可以通過向PTT服務(wù)器發(fā)送Speak命令,將加入狀態(tài)改變?yōu)榘l(fā)言狀態(tài),PTT客戶端還可以通過向PTT服務(wù)器發(fā)送ExitPTT命令,將加入狀態(tài)改變?yōu)殡x開狀態(tài);在發(fā)言狀態(tài)下,PTT客戶端可以通過向PTT服務(wù)器發(fā)送ExitPTT命令,將發(fā)言狀態(tài)改變?yōu)殡x開狀態(tài),PTT客戶端還可以通過向PTT服務(wù)器發(fā)送StopSpeak命令,將發(fā)言狀態(tài)改變?yōu)殪o音狀態(tài);在靜音狀態(tài)下,PTT客戶端可以通過向PTT服務(wù)器發(fā)送Speak命令,將靜音狀態(tài)改變?yōu)榘l(fā)言狀態(tài),PTT客戶端還可以通過向PTT服務(wù)器發(fā)送ExitPTT命令,將靜音狀態(tài)改變?yōu)殡x開狀態(tài);在本發(fā)明其它實(shí)施例中,還可根據(jù)實(shí)際需要,進(jìn)一步擴(kuò)展PTT客戶端的狀態(tài)種類,并不影響本發(fā)明的實(shí)現(xiàn);(三)步驟103的具體實(shí)現(xiàn)根據(jù)步驟102中所記錄的各個(gè)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系,判斷各個(gè)回應(yīng)消息中是否包括將用于PTT客戶端當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息,具體包括在PTT客戶端當(dāng)前狀態(tài)為初始化狀態(tài)時(shí),判斷是否收到命令名為AckCreatePTT或者AckJoinPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;在PTT客戶端當(dāng)前狀態(tài)為加入狀態(tài)時(shí),判斷是否收到命令名為AckSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;在PTT客戶端當(dāng)前狀態(tài)為發(fā)言狀態(tài)時(shí),判斷是否收到命令名為AckStopSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;在PTT客戶端當(dāng)前狀態(tài)為靜音狀態(tài)時(shí),判斷是否收到命令名為AckSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;在本發(fā)明其它實(shí)施例中,如果PTT客戶端包括更多的狀態(tài),則可根據(jù)當(dāng)前狀態(tài),以及將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的命令名,判斷PTT客戶端是否收到用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息,并不影響本發(fā)明的實(shí)現(xiàn);(四)步驟104的具體實(shí)現(xiàn)根據(jù)在步驟102中所記錄的回應(yīng)消息的命令名,在待發(fā)送信令消息集合中查找得到與該回應(yīng)消息相對應(yīng)的信令消息,然后,將該信令消息從待發(fā)送信令消息集合中刪除,并且,如圖2所示,根據(jù)PTT客戶端的狀態(tài)關(guān)系,將當(dāng)前狀態(tài)改變?yōu)榕c回應(yīng)消息相對應(yīng)的狀態(tài),具體包括在當(dāng)前狀態(tài)為初始化狀態(tài)時(shí),根據(jù)命令名為AckCreatePTT或者AckJoinPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榧尤霠顟B(tài);在當(dāng)前狀態(tài)為加入狀態(tài)時(shí),根據(jù)命令名為AckSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榘l(fā)言狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài);在當(dāng)前狀態(tài)為發(fā)言狀態(tài)時(shí),根據(jù)命令名為AckStopSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殪o音狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài);在當(dāng)前狀態(tài)為靜音狀態(tài)時(shí),根據(jù)命令名為AckSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榘l(fā)言狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài);在本發(fā)明其它實(shí)施例中,如果PTT客戶端包括更多的狀態(tài),則可進(jìn)一步根據(jù)各個(gè)狀態(tài)之間的關(guān)系,以及各個(gè)狀態(tài)之間的命令,將PTT客戶端的當(dāng)前狀態(tài)改變?yōu)榕c回應(yīng)消息相對應(yīng)的狀態(tài),并不影響本發(fā)明的實(shí)現(xiàn);在進(jìn)行狀態(tài)改變后,PTT客戶端根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作,例如,改變后的狀態(tài)為發(fā)言狀態(tài)時(shí),則可執(zhí)行啟動錄音設(shè)備這樣的操作,改變?yōu)槠溆酄顟B(tài)時(shí),也應(yīng)執(zhí)行相應(yīng)操作。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法,其特征在于,該方法包括步驟a即按即說(PTT)客戶端向PTT服務(wù)器發(fā)送待發(fā)送信令消息集合中的各個(gè)信令消息;步驟bPTT客戶端從PTT服務(wù)器接收所發(fā)送的信令消息的回應(yīng)消息,并獲取PTT客戶端當(dāng)前狀態(tài);步驟c判斷PTT客戶端是否收到用于將PTT客戶端當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息,如果是,則執(zhí)行步驟d,否則,返回步驟a;步驟d將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作,同時(shí),將該回應(yīng)消息所對應(yīng)的信令消息從待發(fā)送信令消息集合中刪除,返回步驟a,直至信令消息傳輸完畢。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待發(fā)送信令消息集合為消息隊(duì)列,該消息隊(duì)列中保存有各個(gè)待發(fā)送信令消息所對應(yīng)的消息節(jié)點(diǎn);步驟d所述將信令消息從待發(fā)送信令消息集合中刪除為將所述信令消息所對應(yīng)的消息節(jié)點(diǎn)從消息隊(duì)列中刪除。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟a中,PTT客戶端每發(fā)送一次各個(gè)信令消息之后,進(jìn)一步包括分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送次數(shù)是否已經(jīng)達(dá)到預(yù)先為該信令消息所設(shè)定的重發(fā)次數(shù),如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟a中,PTT客戶端每發(fā)送一次各個(gè)信令消息之后,進(jìn)一步包括分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送時(shí)間是否已經(jīng)超過了預(yù)先為該信令消息所設(shè)定的發(fā)送有效時(shí)間,如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在步驟a中,PTT客戶端每發(fā)送一次各個(gè)信令消息之后,進(jìn)一步包括分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送次數(shù)是否已經(jīng)達(dá)到預(yù)先為該信令消息所設(shè)定的重發(fā)次數(shù),如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b;和,分別判斷所發(fā)送的各個(gè)信令消息的當(dāng)前發(fā)送時(shí)間是否已經(jīng)超過了預(yù)先為該信令消息所設(shè)定的發(fā)送有效時(shí)間,如果是,則將該信令消息從待發(fā)送信令消息集合中刪除,然后再執(zhí)行所述步驟b,否則,直接執(zhí)行步驟b。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟c所述判斷PTT客戶端是否收到用于將PTT客戶端當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息為根據(jù)步驟b中所述回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系,判斷各個(gè)回應(yīng)消息中是否包括將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括在PTT客戶端當(dāng)前狀態(tài)為初始化狀態(tài)時(shí),判斷是否收到命令名為AckCreatePTT或者AckJoinPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckCreatePTT或者AckJoinPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榧尤霠顟B(tài),并執(zhí)行與加入狀態(tài)相對應(yīng)的操作。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括在PTT客戶端當(dāng)前狀態(tài)為加入狀態(tài)時(shí),判斷是否收到命令名為AckSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榘l(fā)言狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài)。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括在PTT客戶端當(dāng)前狀態(tài)為發(fā)言狀態(tài)時(shí),判斷是否收到命令名為AckStopSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckStopSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殪o音狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài)。
10.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述根據(jù)回應(yīng)消息的命令名以及PTT客戶端的狀態(tài)關(guān)系執(zhí)行判斷包括在PTT客戶端當(dāng)前狀態(tài)為靜音狀態(tài)時(shí),判斷是否收到命令名為AckSpeak或者AckExitPTT的回應(yīng)消息,如果是,則可判斷得到PTT客戶端收到了用于將當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息;步驟d所述將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作包括根據(jù)命令名為AckSpeak的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)榘l(fā)言狀態(tài),或者根據(jù)命令名為AckExitPTT的回應(yīng)消息,將PTT客戶端當(dāng)前狀態(tài)改變?yōu)殡x開狀態(tài)。
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟d中,所述將回應(yīng)消息所對應(yīng)的信令消息從待發(fā)送信令消息集合中刪除為根據(jù)所述回應(yīng)消息的命令名在待發(fā)送信令消息集合中查找得到與該回應(yīng)消息相對應(yīng)的信令消息,然后將該信令消息從待發(fā)送信令消息集合中刪除。
全文摘要
本發(fā)明為一種應(yīng)用于即按即說通信中的信令消息重發(fā)方法,該方法包括步驟a即按即說(PTT)客戶端向PTT服務(wù)器發(fā)送待發(fā)送信令消息集合中的各個(gè)信令消息;步驟bPTT客戶端從PTT服務(wù)器接收所發(fā)送的信令消息的回應(yīng)消息,并獲取PTT客戶端當(dāng)前狀態(tài);步驟c判斷PTT客戶端是否收到用于將PTT客戶端當(dāng)前狀態(tài)改變?yōu)橄乱粻顟B(tài)的信令消息的回應(yīng)消息,如果是,則執(zhí)行步驟d,否則,返回步驟a;步驟d將PTT客戶端當(dāng)前狀態(tài)改變?yōu)椴襟Ec所述回應(yīng)消息所對應(yīng)的狀態(tài)并根據(jù)改變后的狀態(tài)執(zhí)行相應(yīng)操作,同時(shí),將該回應(yīng)消息所對應(yīng)的信令消息從待發(fā)送信令消息集合中刪除,返回步驟a,直至信令消息傳輸完畢。
文檔編號H04L29/06GK1798372SQ20041010163
公開日2006年7月5日 申請日期2004年12月20日 優(yōu)先權(quán)日2004年12月20日
發(fā)明者王麒 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
集安市| 米林县| 宁晋县| 峡江县| 迁安市| 盐山县| 汕尾市| 白河县| 鸡东县| 宁乡县| 绵竹市| 和龙市| 珲春市| 泸水县| 锡林浩特市| 三江| 和田县| 吕梁市| 松滋市| 武强县| 临桂县| 嘉祥县| 萨嘎县| 绥德县| 通化市| 珲春市| SHOW| 北宁市| 如东县| 民勤县| 突泉县| 儋州市| 辽源市| 齐河县| 饶阳县| 清河县| 长武县| 张北县| 原平市| 鄂尔多斯市| 黑山县|