本發(fā)明涉及的是一種手機(jī)遠(yuǎn)程通訊實(shí)時監(jiān)控與組播的方法,可以應(yīng)用到各類具有可上網(wǎng)功能的移動通訊設(shè)備上。
背景技術(shù):
遠(yuǎn)程監(jiān)控技術(shù),是指通過遠(yuǎn)程服務(wù)器監(jiān)聽特定目標(biāo)的特定內(nèi)容,然后通過網(wǎng)絡(luò)傳輸?shù)街付ㄎ恢谩?/p>
組播(英文名稱:Multicast)技術(shù),是指在發(fā)送端和有需求的多個接收端之間實(shí)現(xiàn)點(diǎn)對多點(diǎn)網(wǎng)絡(luò)連接。在實(shí)時流媒體傳輸應(yīng)用中,使用組播技術(shù),可以對多個接收端實(shí)現(xiàn)高效數(shù)據(jù)傳輸,并且能夠在一定程度上降低主干網(wǎng)絡(luò)的數(shù)據(jù)擁堵。
手機(jī)遠(yuǎn)程通訊監(jiān)控常用的技術(shù)是通過錄音或者短信存儲,將被監(jiān)控手機(jī)的通訊事件和通訊內(nèi)容記錄到本地的存儲設(shè)備,然后按照預(yù)先設(shè)定的頻率單播上傳到服務(wù)器,當(dāng)有查詢請求時,再將這些通訊事件和通訊內(nèi)容從服務(wù)器單播下載到查詢客戶端,這種方式的缺點(diǎn)在于:一,實(shí)時響應(yīng)能力極低,無法滿足用戶的實(shí)用需求,因此,也就無法實(shí)現(xiàn)產(chǎn)品化。二,效率低,相比組播技術(shù),單播通訊在流媒體多方傳輸時,會在網(wǎng)絡(luò)上傳輸大量冗余數(shù)據(jù),不但會造成網(wǎng)絡(luò)擁塞,還對用戶終端的流量造成極大浪費(fèi)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種實(shí)現(xiàn)手機(jī)遠(yuǎn)程通訊實(shí)時監(jiān)控與組播的方法,該方法能夠在不改變手機(jī)原本電信語音網(wǎng)絡(luò)應(yīng)用功能的基礎(chǔ)上,實(shí)現(xiàn)多個通訊終端通訊實(shí)時監(jiān)控與組播功能,不受當(dāng)前用戶所處地理位置的限制,實(shí)時監(jiān)控遠(yuǎn)程手機(jī)來電,短信,并能在一個或者多個聯(lián)網(wǎng)設(shè)備上實(shí)時接聽或回復(fù)。
為了達(dá)到上述目的,本發(fā)明的技術(shù)方案為:
一種實(shí)現(xiàn)手機(jī)遠(yuǎn)程通訊實(shí)時監(jiān)控與組播的方法,該方法基于遠(yuǎn)程手機(jī)客戶端實(shí)時監(jiān)聽與實(shí)時控制模塊和服務(wù)器認(rèn)證與實(shí)時通訊模塊兩個模塊實(shí)現(xiàn);所述的遠(yuǎn)程手機(jī)客戶端實(shí)時監(jiān)聽與實(shí)時控制模塊用于實(shí)時監(jiān)聽遠(yuǎn)程手機(jī)通訊事件,向服務(wù)器發(fā)出認(rèn)證請求,以及與用戶已注冊的聯(lián)網(wǎng)設(shè)備直接組播通訊,或者由服務(wù)器中轉(zhuǎn),與用戶的其他聯(lián)網(wǎng)設(shè)備通訊;所述的服務(wù)器認(rèn)證與實(shí)時通訊模塊用于認(rèn)證客戶端身份,查找與遠(yuǎn)程手機(jī)客戶端屬于同一用戶的其他注冊設(shè)備信息,以及當(dāng)組播不被支持時,實(shí)時中轉(zhuǎn)遠(yuǎn)程手機(jī)與用戶聯(lián)網(wǎng)設(shè)備之間的通訊數(shù)據(jù)。
假設(shè)用戶A撥打用戶B的手機(jī)號碼,用戶B擁有遠(yuǎn)程手機(jī)P0,以及可上網(wǎng)通訊終端(如手機(jī),電腦,平板等)P1,P2,P3,……Pn,其中,P0的電話號碼是用戶B常用電話號碼,作為自己的聯(lián)系方式公開給其他用戶(例如用戶A)使用,該方法具體包括以下步驟:
1)用戶B注冊遠(yuǎn)程手機(jī)P0,以及其他聯(lián)網(wǎng)設(shè)備P1,P2,P3,……,Pn的設(shè)備名稱,硬件地址,組播支持信息,并設(shè)置實(shí)時監(jiān)控與控制規(guī)則,提交給服務(wù)器;用戶A通過電信網(wǎng)絡(luò)撥打用戶B的手機(jī)P0的電話號碼。
2)遠(yuǎn)程手機(jī)P0有來電或短信時,根據(jù)步驟1)中用戶B設(shè)置的實(shí)時監(jiān)控規(guī)則,通過P0上的客戶端向服務(wù)器發(fā)送來電或短信信息,服務(wù)器對該客戶端進(jìn)行認(rèn)證。
3)若認(rèn)證失敗,服務(wù)器向遠(yuǎn)程手機(jī)P0發(fā)送放棄監(jiān)聽指令;若認(rèn)證成功,進(jìn)行下一步。
4)服務(wù)器查詢用戶B注冊的其他聯(lián)網(wǎng)設(shè)備(例如P1)是否在線,并根據(jù)步驟1)中用戶B設(shè)置的實(shí)時控制規(guī)則,向所有在線設(shè)備發(fā)送來電或短信提示。
5)用戶B通過注冊的聯(lián)網(wǎng)設(shè)備(例如P1)查看來電號碼,發(fā)出“接受”或“拒絕”指令,附帶該聯(lián)網(wǎng)設(shè)備的組播支持標(biāo)志至服務(wù)器,如果聯(lián)網(wǎng)設(shè)備支持組播,則同時向P0發(fā)送一條組播探測數(shù)據(jù)包,服務(wù)器收到“接受”或“拒絕”指令后,轉(zhuǎn)發(fā)給P0。
6)遠(yuǎn)程手機(jī)P0上的客戶端根據(jù)步驟5)服務(wù)器轉(zhuǎn)發(fā)的指令,如果是“拒絕”指令,則終止本次通信;如果是“接受”指令,進(jìn)行下一步。
7)在指定時間內(nèi)收到組播探測數(shù)據(jù)包時,P0直接通過組播與用戶的聯(lián)網(wǎng)設(shè)備實(shí)時通訊,否則,遠(yuǎn)程手機(jī)P0通過服務(wù)器進(jìn)行實(shí)時通訊轉(zhuǎn)發(fā),與用戶B的聯(lián)網(wǎng)設(shè)備通訊;
8)當(dāng)參與通話的任何一方掛斷電話或者停止發(fā)送短信時,通訊結(jié)束。
本發(fā)明所提供的手機(jī)通訊遠(yuǎn)程實(shí)時監(jiān)控技術(shù)具有非常廣泛和實(shí)用的應(yīng)用場景:比如,當(dāng)用戶擁有多部移動通訊終端時,可以指定一部手機(jī)為遠(yuǎn)程監(jiān)控手機(jī),當(dāng)有短信或來電到達(dá),用戶可以在任何可以上網(wǎng)的地點(diǎn),用其他聯(lián)網(wǎng)的手機(jī)或電腦,平板等設(shè)備回復(fù)短信或接聽來電,解決手機(jī)忘帶或者漫游費(fèi)用昂貴的弊端;同時組播傳輸技術(shù)還能大大節(jié)約用戶終端流量和核心網(wǎng)絡(luò)帶寬,具有廣闊應(yīng)用前景。
附圖說明
圖1是通訊過程的數(shù)據(jù)流程圖。
具體實(shí)施方式
下面結(jié)合圖1,對本發(fā)明做詳細(xì)的描述:圖1中,S0代表手機(jī)P0上的客戶端實(shí)時監(jiān)聽與實(shí)時控制模塊,Sx代表服務(wù)器認(rèn)證與實(shí)時通訊模塊,V代表待遍歷客戶端集合,Z代表支持組播的客戶端集合,M代表不支持組播的客戶端集合,編號1~8為數(shù)據(jù)流程標(biāo)志符,分別對應(yīng)以下步驟中的1~8,現(xiàn)在用戶A欲與用戶B通訊,過程如下:
1:用戶A撥打用戶B的手機(jī)P0的電話號碼,電信公司的電話交換系統(tǒng)試圖接通用戶B的手機(jī)P0,該過程由通訊雙方的手機(jī)使用的電信網(wǎng)絡(luò)完成。
2:用戶B的手機(jī)P0語音通話進(jìn)程啟動,P0中的監(jiān)控軟件S0注冊有語音通話事件監(jiān)聽器,因此S0被啟動。S0通過標(biāo)準(zhǔn)HTTP協(xié)議向Sx發(fā)出認(rèn)證請求,請求包含以下信息:
(a)用戶A的電話號碼
(b)P0的電話號碼
(c)P0手機(jī)系統(tǒng)當(dāng)前的時間戳
(d)P0的客戶端S0中保存的注冊ID
(e)P0的客戶端S0中保存的注冊密鑰
3.1:Sx收到S0發(fā)來的請求信息,對2中發(fā)來的客戶端注冊ID和密鑰進(jìn)行認(rèn)證。
3.2:認(rèn)證失敗,Sx記錄本次失敗認(rèn)證信息,并準(zhǔn)備好向客戶端S0發(fā)送的錯誤反饋信息。
3.3:Sx向S0發(fā)送3.2中的錯誤反饋信息,S0收到該錯誤反饋信息后,記錄認(rèn)證失敗信息。
3.4:客戶端S0放棄本次監(jiān)聽。
3.5:認(rèn)證成功。
4:認(rèn)證通過后,Sx通過查詢用戶B的注冊數(shù)據(jù),找到用戶B注冊的其他設(shè)備上的客戶端ID,然后根據(jù)用戶B預(yù)先指定的轉(zhuǎn)接優(yōu)先級規(guī)則,對這些客戶端的ID執(zhí)行優(yōu)先級降序排序,記排序后的客戶端ID集合為V。
Sx遍歷集合V,對于V中每一個客戶端ID,向該ID對應(yīng)的設(shè)備發(fā)送通知信息,包含以下信息:
(a)用戶A的電話號碼
(b)客戶端S0發(fā)送給服務(wù)器模塊Sx的時間戳
(c)P0的組播組地址
5.1:集合V中的ID對應(yīng)的設(shè)備上的客戶端Sj收到該通知后,首先根據(jù)收到的時間戳和組播組地址,構(gòu)建組播更新向量,根據(jù)該向量,更新或者保持本機(jī)客戶端存儲的組播地址映射,然后,通知用戶B,本次通訊概要信息,包括用戶A的電話號碼和當(dāng)前執(zhí)行監(jiān)聽任務(wù)的P0的手機(jī)號碼,根據(jù)用戶的反饋,向Sx發(fā)送指令消息,該消息包含“接受”或者“拒絕”指令,如果本機(jī)支持組播通訊,指令中設(shè)置組播允許標(biāo)志為1,同時,向P0發(fā)送一條組播探測數(shù)據(jù)包,否則,設(shè)置組播允許標(biāo)志為0。
5.2:Sx收到了Sj的“接受”或者“拒絕”指令,然后,向客戶端S0發(fā)送“接受”或者“拒絕”指令,指令中附帶5.1的組播允許標(biāo)志。
6.1:客戶端S0收到Sx發(fā)送來的指令,判斷指令類型。
6.2:客戶端S0收到Sx的“拒絕”指令,則調(diào)用P0系統(tǒng)API掛斷本次通話,或者刪除收到的短信,然后,結(jié)束本次通訊。
6.3:客戶端S0收到Sx的“接受”指令,判斷消息中組播允許標(biāo)志。
7.1:組播允許標(biāo)志為1,客戶端S0在指定時間內(nèi)等待組播探測數(shù)據(jù)包,如果檢測到組播探測數(shù)據(jù)包,則將指令中附帶的客戶端ID和組播地址數(shù)據(jù)加入待轉(zhuǎn)發(fā)客戶端集合Z,然后,循環(huán)執(zhí)行7.3,7.4,直到用戶A,或者轉(zhuǎn)發(fā)集合Z中的任意一個客戶端結(jié)束本次通訊。
7.2:組播允許標(biāo)志為0,或者雖然組播允許標(biāo)志為1但在指定時間內(nèi)未能成功收到組播探測數(shù)據(jù)包,則客戶端S0將指令中附帶的客戶端ID加入待轉(zhuǎn)發(fā)客戶端集合M,然后,循環(huán)執(zhí)行7.5,7.6,7.7,7.8直到用戶A,或者轉(zhuǎn)發(fā)集合M中的任意一個客戶端結(jié)束本次通訊。
7.3:集合Z中的客戶端加入本次通話,開啟兩個監(jiān)聽線程,分別為數(shù)據(jù)輸出監(jiān)聽線程和遠(yuǎn)程組播輸入監(jiān)聽線程,然后向客戶端S0發(fā)送“通訊確認(rèn)”指令,指令包含為本次通訊建立的數(shù)據(jù)通訊端口。
之后,每次循環(huán),數(shù)據(jù)輸出監(jiān)聽線程,監(jiān)聽該客戶端所在手機(jī)的語音輸出數(shù)據(jù)或用戶B輸入的回復(fù)短信數(shù)據(jù),壓縮后,直接發(fā)送給客戶端S0;遠(yuǎn)程組播輸入監(jiān)聽線程,監(jiān)聽來自客戶端S0的壓縮語音數(shù)據(jù)或短信數(shù)據(jù),解壓后,送入本機(jī)語音輸出設(shè)備或顯示短信內(nèi)容。
7.4:客戶端S0充當(dāng)監(jiān)聽服務(wù)器,收到7.3的“通訊確認(rèn)”指令,根據(jù)指令中指定的本次通話所用數(shù)據(jù)通訊端口,啟動遠(yuǎn)程組播輸入監(jiān)聽線程和數(shù)據(jù)輸出監(jiān)聽線程。
之后,每次循環(huán),數(shù)據(jù)輸出監(jiān)聽線程,將監(jiān)聽到的手機(jī)P0的語音輸出數(shù)據(jù)或短信數(shù)據(jù),壓縮后,直接發(fā)送給集合Z中的客戶端;遠(yuǎn)程組播輸入監(jiān)聽線程,將監(jiān)聽到的來自集合Z中客戶端的壓縮語音數(shù)據(jù)或短信數(shù)據(jù),解壓后,調(diào)用系統(tǒng)API將語音數(shù)據(jù)或短信數(shù)據(jù)發(fā)送給用戶A。
7.5:集合M中的客戶端加入本次通訊,開啟兩個監(jiān)聽線程,分別為數(shù)據(jù)輸出監(jiān)聽線程和遠(yuǎn)程服務(wù)器輸入監(jiān)聽線程,然后向Sx發(fā)送“通訊確認(rèn)”指令,指令包含為本次通話建立的數(shù)據(jù)通訊端口。
之后,每次循環(huán),集合M中的客戶端數(shù)據(jù)輸出監(jiān)聽線程,監(jiān)聽該客戶端所在手機(jī)的語音輸出數(shù)據(jù)或用戶B輸入的回復(fù)短信數(shù)據(jù),壓縮后,發(fā)送給Sx;遠(yuǎn)程服務(wù)器輸入監(jiān)聽線程,監(jiān)聽來自7.7的服務(wù)器模塊Sx的壓縮語音數(shù)據(jù)或短信數(shù)據(jù),解壓后,送入本機(jī)語音輸出設(shè)備或顯示短信內(nèi)容。
7.6:客戶端S0充當(dāng)監(jiān)聽服務(wù)器,收到7.5的“通訊確認(rèn)”指令,根據(jù)指令中指定的本次通訊所用通訊端口,啟動服務(wù)器輸入監(jiān)聽線程和數(shù)據(jù)輸出監(jiān)聽線程,向Sx發(fā)送“更新路由映射”指令。之后,每次循環(huán),S0的數(shù)據(jù)輸出監(jiān)聽線程,將監(jiān)聽到的語音數(shù)據(jù)或短信數(shù)據(jù)發(fā)送給Sx。
7.7:Sx收到7.6的“更新路由映射”指令,根據(jù)服務(wù)器當(dāng)前時間戳和指令中指定的本次通訊所用數(shù)據(jù)通訊端口以及遠(yuǎn)程客戶端ID,更新或保持應(yīng)用層路由映射關(guān)系表,然后,構(gòu)建遠(yuǎn)程客戶端輸入輸出緩沖隊(duì)列,并啟動輸入輸出緩沖區(qū)監(jiān)聽線程。
之后,每次循環(huán),根據(jù)來自客戶端S0的本次通訊目的地址,查詢應(yīng)用層路由映射關(guān)系表,將壓縮語音數(shù)據(jù)或短信數(shù)據(jù)放入對應(yīng)的緩沖隊(duì)列,輸入輸出緩沖區(qū)監(jiān)聽線程負(fù)責(zé)把緩沖隊(duì)列上的數(shù)據(jù)發(fā)送到對應(yīng)的集合M中的客戶端。
7.8:每次循環(huán),Sx將來自7.5的M中的客戶端壓縮語音數(shù)據(jù)或短信數(shù)據(jù)發(fā)送給客戶端S0,客戶端S0的服務(wù)器輸入監(jiān)聽線程,將該壓縮語音數(shù)據(jù)或短信數(shù)據(jù)解壓后,調(diào)用系統(tǒng)API將語音數(shù)據(jù)或短信數(shù)據(jù)發(fā)送給用戶A。
8.1:集合Z中的某一客戶端收到來自用戶B的“終止通訊”指令,通過7.3的循環(huán)過程向客戶端S0發(fā)送“通訊結(jié)束”指令,清理相關(guān)資源后,結(jié)束通訊?;蛘?,收到了7.4過程發(fā)來的“終止通訊”指令,清理相關(guān)資源后,結(jié)束通訊。
8.2:集合M中的某一客戶端收到來自用戶B的終止通訊請求,通過7.5的循環(huán)過程向Sx發(fā)送“通訊結(jié)束”指令,清理相關(guān)資源后,結(jié)束通訊。或者,收到了7.7過程發(fā)來的“終止通訊”指令,清理相關(guān)資源后,結(jié)束通訊。
8.3:客戶端S0收到來自8.1的“通訊結(jié)束”指令,清理相關(guān)資源后,結(jié)束通訊。
8.4:客戶端S0收到來自8.2的“通訊結(jié)束”指令,清理相關(guān)資源后,結(jié)束通訊。
8.5:該過程僅在通訊類型為語音通話時發(fā)生,用戶A掛斷通話,客戶端S0監(jiān)聽到通話結(jié)束事件,先通過7.4,或者7.7過程發(fā)生終止通訊指令,然后清理相關(guān)資源,結(jié)束通訊。