專利名稱:一種VoIP客戶端的多進(jìn)程實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及語音通話的技術(shù)領(lǐng)域,尤其涉及使用IP電話在局域網(wǎng)中完成語音通
話的技術(shù)領(lǐng)域。
背景技術(shù):
VoIP (Voice Over Internet Protocol),即是常說的IP電話,是一種可以在IP網(wǎng) 絡(luò)上互傳模擬信號的技術(shù),其基本原理是通過語音的壓縮算法對語音數(shù)據(jù)編碼進(jìn)行壓縮處 理,然后將這些語音數(shù)據(jù)按TCP/IP標(biāo)準(zhǔn)進(jìn)行打包,經(jīng)過IP網(wǎng)絡(luò)將數(shù)據(jù)包送至目的端,再將 這些語音數(shù)據(jù)包串起來,經(jīng)過解壓處理后,還原成原來的語音信號以供接聽者接收,從而達(dá) 到由互聯(lián)網(wǎng)傳送語音的目的。但是現(xiàn)階段VoIP還不是很成熟,要進(jìn)一步改進(jìn)服務(wù)品質(zhì),另 一方面要引入更多的新功能、新業(yè)務(wù)。
發(fā)明內(nèi)容
發(fā)明目的 本發(fā)明目的是基于VOIP信令協(xié)議的軟電話的設(shè)計(jì)和實(shí)現(xiàn),提供一種VoIP客戶端
的多進(jìn)程實(shí)現(xiàn)方法。 技術(shù)方案 本發(fā)明為實(shí)現(xiàn)上述目的,采用如下技術(shù)方案 —種VoIP客戶端的多進(jìn)程實(shí)現(xiàn)方法,在VoIP客戶端設(shè)置UI進(jìn)程模塊、MAIN進(jìn)程
模塊、SIP進(jìn)程模塊,處理的步驟如下( — )、客戶端從網(wǎng)絡(luò)端接收數(shù)據(jù)的步驟 A、SIP進(jìn)程模塊通過SIP協(xié)議棧從網(wǎng)絡(luò)中采集來自網(wǎng)絡(luò)的信息,并且進(jìn)行處理,然 后將信息傳遞給MAIN進(jìn)程模塊; B、 MAIN進(jìn)程模塊對A步驟所述信息進(jìn)行處理,并最終傳送給UI進(jìn)程模塊;
C、UI進(jìn)程模塊根據(jù)B步驟發(fā)來的信息與使用者進(jìn)行交互繼而確定下一步的操作;
( 二 )、客戶端向網(wǎng)絡(luò)端傳送數(shù)據(jù)的步驟 D、 UI進(jìn)程模塊將從VOIP系統(tǒng)的界面獲得控件信息傳送給MAIN進(jìn)程;
E、 MAIN進(jìn)程模塊對該控件信息進(jìn)行處理后,將此信息發(fā)送給SIP進(jìn)程模塊;
F、 SIP進(jìn)程模塊再通過網(wǎng)絡(luò)接口將信息最終傳遞出去。
有益效果 本發(fā)明采用下述技術(shù)方案,具有如下優(yōu)點(diǎn)。 本發(fā)明的設(shè)計(jì)是多進(jìn)程實(shí)現(xiàn)的,各個(gè)功能模塊運(yùn)行完全獨(dú)立的代碼段避免了競 爭,且本發(fā)明中使用的三個(gè)進(jìn)程使得軟電話的運(yùn)行更加穩(wěn)定。本發(fā)明使用GTK實(shí)現(xiàn)軟電話 的外觀,具有跨平臺的功能 1、本發(fā)明UI進(jìn)程模塊中GUI是為系統(tǒng)的功能需求量身定做的使用GTK設(shè)計(jì)的,具 有跨平臺的功能且從每一個(gè)控件到頁面的跳轉(zhuǎn)狀態(tài)都是自主設(shè)計(jì)的,所以該系統(tǒng)能滿足日后系統(tǒng)功能擴(kuò)展的要求。 2、該系統(tǒng)中使用了三個(gè)進(jìn)程的工作機(jī)制,且三個(gè)進(jìn)程在運(yùn)行時(shí)都是運(yùn)行自己的完 全不同的代碼段,這樣就避免了競爭。多進(jìn)程的工作機(jī)制使得該系統(tǒng)更加健壯,一個(gè)進(jìn)程的 崩潰,不會影響到其他的進(jìn)程其它進(jìn)程。 3、該發(fā)明在采用UI進(jìn)程,MAIN進(jìn)程的、SIP進(jìn)程的同時(shí),在SIP進(jìn)程中采用了兩個(gè)
進(jìn)線程工作機(jī)制,在保證穩(wěn)健性的同時(shí),使得處理方便且加快了處理速度。 4、該系統(tǒng)因?yàn)槭蔷钟蚓W(wǎng)內(nèi)部的語音通話,因此完全免費(fèi),且可以實(shí)現(xiàn)呼叫轉(zhuǎn)接、來
電顯示等功能。 5、該系統(tǒng)的SIP進(jìn)程模塊中包含兩個(gè)線程,其中一個(gè)是處理來自網(wǎng)絡(luò)的信息的線 程,另一個(gè)是處理來自Main進(jìn)程模塊的線程。 6、該系統(tǒng)支持MYSQL的數(shù)據(jù)庫技術(shù),能夠?qū)﹄娫挷竞秃艚袣v史進(jìn)行管理。 7、該系統(tǒng)可以通過服務(wù)器端的配置實(shí)現(xiàn)多種的呼叫擴(kuò)展功能。 8、作為VOIP技術(shù)的客戶端,在進(jìn)行VOIP的網(wǎng)絡(luò)語音傳輸上具有VOIP技術(shù)的一切優(yōu)點(diǎn)。
圖1是本發(fā)明的整體體系框架圖。 圖2是本發(fā)明的UI進(jìn)程和MAIN進(jìn)程之間的管道示意圖。
圖3是本發(fā)明的MAIN進(jìn)程與SIP進(jìn)程之間的管道示意圖。
圖4是本發(fā)明的MAIN進(jìn)程中的狀態(tài)轉(zhuǎn)移圖。
圖5是本發(fā)明UI進(jìn)程、MAIN進(jìn)程以及SIP進(jìn)程之間的信息。
具體實(shí)施例方式
下面結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明 如圖1所示,本發(fā)明中包括UI進(jìn)程模塊、MAIN進(jìn)程模塊、SIP進(jìn)程模塊。SIP進(jìn)程 模塊通過SIP(會話初始化協(xié)議)協(xié)議棧從網(wǎng)絡(luò)中采集來自網(wǎng)絡(luò)的信息,并且進(jìn)行處理,然 后將信息傳遞給MAIN進(jìn)程模塊。MAIN進(jìn)程模塊對這些信息進(jìn)行處理,并最終傳送給UI進(jìn) 程模塊。UI進(jìn)程模塊根據(jù)收到的信息與使用者進(jìn)行交互繼而確定下一步的操作。UI進(jìn)程 將從VOIP系統(tǒng)的界面獲得得控件信息傳送給MAIN進(jìn)程,MAIN進(jìn)程進(jìn)行處理后,交給SIP進(jìn) 程信息,SIP進(jìn)程再通過網(wǎng)絡(luò)接口將信息最終傳遞出去,這就是本發(fā)明的整個(gè)的信息流向。
如圖2所示,本發(fā)明中UI進(jìn)程模塊以及MAIN進(jìn)程模塊進(jìn)行信息傳遞的關(guān)鍵所在 就是模塊之間的管道。UI進(jìn)程模塊和MAIN進(jìn)程模塊間的管道定義如下
int pipe_ui_to_main_fd[2];
int pipe_main_to_ui_fd[2]; 如圖2所示pipe_ui_to_main_fd
禾口 pipe_main_to_ui_fd
為進(jìn)程的讀管 道,而pipe—ui—tojnain—fd[1]和pipe_main_to_ui_fd[l]是進(jìn)程的寫管道。其中UI進(jìn)程 與MAIN進(jìn)程之間傳遞的信息結(jié)構(gòu)定義如下
struct_ui_main_pipe_info_
{
mainState main_state ; char sip_url[30]; keyValue key ; char display[100]; }; 如圖3所示,本發(fā)明中MAIN進(jìn)程模塊以及SIP進(jìn)程模塊進(jìn)行信息傳遞的關(guān)鍵所在 就是模塊之間的管道。MAIN進(jìn)程模塊和SIP進(jìn)程模塊間的管道定義如下
int pipe—sip_to_main_fd[2];
int pipe—main_to_sip—fd[2];如圖3所示pipe_main—to—sip—fd[O]和pipe_sip_to_main—fd[O]為進(jìn)程的讀管 道,而pipejnain—to—sip_fd[l]禾P pipe_sip_to_main—fd [1]是進(jìn)程的寫管道。MAIN進(jìn)程 和SIP進(jìn)程之間傳遞的信息結(jié)構(gòu)定義如下
struct_sip_main_pipe_info_ { mainState main—state ; char sip_url[30]; keyValue cmd ; sipEvent sip—event ; char phone—皿m[15]; char display[100]; }; 如圖4所示,本發(fā)明中MAIN進(jìn)程模塊的狀態(tài)轉(zhuǎn)移示意圖。本發(fā)明中MAIN狀態(tài)的
定義如下所示 e皿m—main—state— {
IDLE,
RING,
WAITING,
DIAL,
BUSY }; 各個(gè)狀態(tài)的轉(zhuǎn)移都有不同的消息觸發(fā),詳細(xì)信息見圖5所示。 如圖5所示,本發(fā)明中三個(gè)進(jìn)程模塊之間的具體信息傳遞。其中來自UI進(jìn)程模塊
和來自SIP進(jìn)程模塊的信息定義如下所示 enum—key—value— { NUMO, 匪l , NUM2,
NUM3,
NUM4,
NUM5,
NUM6,
NUM7,
NUM8,
NUM9,
KEYSTAR,
KEYP0畫,
KEYDIAL,
KEY應(yīng)GUP,
KEYVOL,
EXIT—PROCESS,
KEYCLEAR
}; e皿m—sip—event—
{ NEW_INVITE,
REV—RING,
REV_ANSWERED,
OTHERSIDE_CLOSED
}; 其中圖5中的status是MAIN進(jìn)程模塊中的狀態(tài)變化。 1、status = IDLE時(shí),接收到來自UI進(jìn)程的所有信息,MAIN進(jìn)程status將轉(zhuǎn)移到 WAITING狀態(tài)。如果接收到來自SIP進(jìn)程的NEW_INVITE,則status將轉(zhuǎn)移到RING。
2、status = WAITING,接收到KEYDIAL,貝U status轉(zhuǎn)移到DIAL,且把sip_url通過 管道傳遞給SIP進(jìn)程。如果接收到KEYGHANGUP,則status轉(zhuǎn)移到IDLE。接收到其它的來 自UI進(jìn)程的消息時(shí),則保持status不變。 3、 status = RING,接收到來自UI進(jìn)程的KEYDIAL,則status轉(zhuǎn)移到BUSY,并且傳 遞給SIP進(jìn)程。接收到KEYHANGUP, status轉(zhuǎn)移到IDLE,并且傳遞給SIP進(jìn)程。接收到來 自SIP進(jìn)程的OTHERSIDE—CLOSED,則status = IDLE。4、 status = BUSY,接收到來自UI的KEYHANGUP,則status轉(zhuǎn)移到IDLE,并且通過 管道傳遞給SIP進(jìn)程。接收到來SIP進(jìn)程的OTHERSIDE_CLOSED,則status轉(zhuǎn)移到IDLE。
5、status = DIAL,接收到來自UI的KEYHANGUP,則status轉(zhuǎn)移到IDLE,并且傳遞 給SIP進(jìn)程。接收到來SIP進(jìn)程的OTHERSIDE_CLOSED,則status轉(zhuǎn)移到IDLE。接收到來 SIP進(jìn)程的REV_ANSWERED, status轉(zhuǎn)移到BUSY。
權(quán)利要求
一種VoIP客戶端的多進(jìn)程實(shí)現(xiàn)方法,其特征在于在VoIP客戶端依次設(shè)置UI進(jìn)程模塊、MAIN進(jìn)程模塊、SIP進(jìn)程模塊,處理的步驟如下(一)、客戶端從網(wǎng)絡(luò)端接收數(shù)據(jù)的步驟A、SIP進(jìn)程模塊通過SIP協(xié)議棧從網(wǎng)絡(luò)中采集來自網(wǎng)絡(luò)的信息,并且進(jìn)行處理,然后將信息傳遞給MAIN進(jìn)程模塊;B、MAIN進(jìn)程模塊對A步驟所述信息進(jìn)行處理,并最終傳送給UI進(jìn)程模塊;C、UI進(jìn)程模塊根據(jù)B步驟發(fā)來的信息與使用者進(jìn)行交互繼而確定下一步的操作;(二)、客戶端向網(wǎng)絡(luò)端傳送數(shù)據(jù)的步驟D、UI進(jìn)程模塊將從VOIP系統(tǒng)的界面獲得控件信息傳送給MAIN進(jìn)程;E、MAIN進(jìn)程模塊對該控件信息進(jìn)行處理后,將此信息發(fā)送給SIP進(jìn)程模塊;F、SIP進(jìn)程模塊再通過網(wǎng)絡(luò)接口將信息最終傳遞出去。
全文摘要
本發(fā)明提供一種VoIP客戶端的多進(jìn)程實(shí)現(xiàn)方法,該方法包括設(shè)置UI進(jìn)程模塊、MAIN進(jìn)程模塊、SIP進(jìn)程模塊,處理的步驟如下A、SIP進(jìn)程模塊通過SIP協(xié)議棧從網(wǎng)絡(luò)中采集來自網(wǎng)絡(luò)的信息,并且進(jìn)行處理,然后將信息傳遞給MAIN進(jìn)程模塊;B、MAIN進(jìn)程模塊對A步驟所述信息進(jìn)行處理,并最終傳送給UI進(jìn)程模塊;C、UI進(jìn)程模塊根據(jù)B步驟發(fā)來的信息與使用者進(jìn)行交互繼而確定下一步的操作;D、UI進(jìn)程模塊將從VoIP系統(tǒng)的界面獲得控件信息傳送給MAIN進(jìn)程;E、MAIN進(jìn)程模塊對該控件信息進(jìn)行處理后,將此信息發(fā)送給SIP進(jìn)程模塊;F、SIP進(jìn)程模塊再通過網(wǎng)絡(luò)接口將信息最終傳遞出去;本發(fā)明在進(jìn)行VoIP的網(wǎng)絡(luò)語音傳輸上具有VoIP技術(shù)的一切優(yōu)點(diǎn)。
文檔編號H04L29/06GK101729702SQ20091026326
公開日2010年6月9日 申請日期2009年12月17日 優(yōu)先權(quán)日2009年12月17日
發(fā)明者任夢琪, 侯旭勃, 吳帆揚(yáng), 孫慶慶, 席雯, 王開, 裴文江 申請人:東南大學(xué)