戶端方式向SMSC注冊(cè)之后,才能上傳短信。SMSC要下發(fā)短信,必須先向SP服務(wù)端發(fā)起連接請(qǐng)求,得到確認(rèn)后才能下發(fā)短信。CMPP協(xié)議兩種方式全部支持。
[0056]參照上述三種短信協(xié)議,可以將短信接入裝置分為以下兩種方式:只做客戶端,或者既做客戶端又做服務(wù)端。
[0057]本實(shí)施例提供的短信接入裝置,支持短信點(diǎn)對(duì)點(diǎn)(SMPP)協(xié)議或者中國(guó)移動(dòng)點(diǎn)對(duì)點(diǎn)協(xié)議(CMPP),也即本實(shí)施例中的短信接入裝置工作于客戶端模式。
[0058]實(shí)施例二
[0059]請(qǐng)參閱圖2a,為本發(fā)明實(shí)施例二提供的一種短信接入裝置的結(jié)構(gòu)示意圖。該短信接入裝置可以配置在短信網(wǎng)關(guān)中,該裝置包括:接入主模塊、數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊、協(xié)議處理模塊、超時(shí)處理模塊、監(jiān)聽服務(wù)模塊和至少一個(gè)請(qǐng)求處理模塊。本實(shí)施例提供的短信接入裝置適用于中國(guó)聯(lián)通短信網(wǎng)關(guān)系統(tǒng)接口協(xié)議(SGIP)或者中國(guó)移動(dòng)點(diǎn)對(duì)點(diǎn)(CMPP)協(xié)議。
[0060]其中,所述數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊和超時(shí)處理模塊構(gòu)成客戶端模塊,在數(shù)據(jù)發(fā)送模塊向短信中心發(fā)送數(shù)據(jù)的過(guò)程中以及數(shù)據(jù)接收模塊接收短信中心下發(fā)的數(shù)據(jù)的過(guò)程中均需要調(diào)用協(xié)議處理模塊;所述監(jiān)聽服務(wù)模塊和至少一個(gè)請(qǐng)求處理模塊構(gòu)成服務(wù)端模塊。
[0061]其中,接入主模塊的部分功能與上述實(shí)施例中接入主模塊的功能一致,具體為:用于啟動(dòng)數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊和超時(shí)處理模塊;以及向短信中心注冊(cè),并在注冊(cè)成功時(shí)建立第一鏈路,其中所述第一鏈路用于所述數(shù)據(jù)發(fā)送模塊與所述短信中心之間的交互,還用于所述短信中心與所述數(shù)據(jù)接收模塊之間的交互。本實(shí)施例中,所述接入主模塊的新增功能具體為:還用于啟動(dòng)所述監(jiān)聽服務(wù)模塊,以及在注冊(cè)成功時(shí)建立第二鏈路,所述第二鏈路用于所述短信中心與所述監(jiān)聽服務(wù)模塊之間的請(qǐng)求交互,以及用于所述短信中心與所述至少一個(gè)請(qǐng)求處理模塊之間的數(shù)據(jù)交互。
[0062]換言之,所述第一鏈路建立在所述短信中心與所述客戶端模塊之間,所述第二鏈路建立在所述短信中心與所述服務(wù)端模塊之間。
[0063]其中,數(shù)據(jù)發(fā)送模塊的功能與上述實(shí)施例中數(shù)據(jù)發(fā)送模塊的功能一致,具體為,用于調(diào)用協(xié)議處理模塊按照設(shè)定協(xié)議對(duì)獲取的待發(fā)送數(shù)據(jù)進(jìn)行打包,并將打包后的待發(fā)送數(shù)據(jù)包通過(guò)所述第一鏈路發(fā)送至所述短信中心;以及將發(fā)送的數(shù)據(jù)包中的原始發(fā)送數(shù)據(jù)寫入所述短信網(wǎng)關(guān)中的等待響應(yīng)隊(duì)列,不再贅述。
[0064]進(jìn)一步地,所述數(shù)據(jù)發(fā)送模塊具體可以用于:調(diào)用所述協(xié)議處理模塊按照設(shè)定協(xié)議對(duì)從所述短信網(wǎng)關(guān)中的短信發(fā)送隊(duì)列中獲取的由與所述短信網(wǎng)關(guān)連接的應(yīng)用系統(tǒng)寫入的待發(fā)送數(shù)據(jù)進(jìn)行打包(可參見上述實(shí)施例中的相應(yīng)說(shuō)明,不再贅述)。
[0065]進(jìn)一步地,所述數(shù)據(jù)發(fā)送模塊還可優(yōu)選用于:在從所述短信網(wǎng)關(guān)中的短信發(fā)送隊(duì)列中沒(méi)有獲取到由與所述短信網(wǎng)關(guān)連接的應(yīng)用系統(tǒng)寫入的待發(fā)送數(shù)據(jù)時(shí),通過(guò)所述第一鏈路向所述短信中心發(fā)送鏈路測(cè)試包(可參見上述實(shí)施例中的相應(yīng)說(shuō)明,不再贅述)。
[0066]進(jìn)一步地,所述數(shù)據(jù)發(fā)送模塊還可優(yōu)選用于:在從所述短信網(wǎng)關(guān)中的短信發(fā)送隊(duì)列中獲取到由與所述短信網(wǎng)關(guān)連接的應(yīng)用系統(tǒng)寫入的當(dāng)前待發(fā)送數(shù)據(jù)之后,檢查所述等待響應(yīng)隊(duì)列中未接收到響應(yīng)的、但已經(jīng)發(fā)送的所述待發(fā)送數(shù)據(jù)的數(shù)量,并與預(yù)設(shè)流量發(fā)送控制窗口比較,根據(jù)比較結(jié)果決定是否打包并發(fā)送獲取的當(dāng)前待發(fā)送數(shù)據(jù)(可參見上述實(shí)施例中的相應(yīng)說(shuō)明,不再贅述)。
[0067]其中,所述數(shù)據(jù)接收模塊的功能僅為上述實(shí)施例中數(shù)據(jù)接收模塊的部分功能一致,本實(shí)施例中,所述數(shù)據(jù)接收模塊僅用于通過(guò)所述第一鏈路從所述短信中心接收協(xié)議響應(yīng)數(shù)據(jù);調(diào)用所述協(xié)議處理模塊按照設(shè)定協(xié)議對(duì)所述協(xié)議響應(yīng)數(shù)據(jù)進(jìn)行解包;判斷解包后的協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類型,并根據(jù)所述判斷結(jié)果,進(jìn)行相應(yīng)處理;以及將解包后的協(xié)議響應(yīng)數(shù)據(jù)寫入所述短信網(wǎng)關(guān)中的等待響應(yīng)隊(duì)列;其中,所述協(xié)議響應(yīng)數(shù)據(jù)由所述短信中心在成功接收到所述數(shù)據(jù)發(fā)送模塊發(fā)送的待發(fā)送數(shù)據(jù)包并進(jìn)行響應(yīng)后生成;而在上述實(shí)施例中,數(shù)據(jù)接收模塊還用于通過(guò)第一鏈路與短信中心交互業(yè)務(wù)請(qǐng)求數(shù)據(jù),而在本實(shí)施例中,月艮務(wù)端模塊通過(guò)第二鏈路與短信中心交互業(yè)務(wù)請(qǐng)求數(shù)據(jù),可參見下述對(duì)監(jiān)聽服務(wù)模塊和請(qǐng)求處理模塊的介紹。也即,客戶端模塊通過(guò)第一鏈路向短信中心上傳短信,短信中心通過(guò)第二鏈路向服務(wù)端模塊下發(fā)短信,兩條鏈路互不干涉,與短信中心獨(dú)立通訊。
[0068]換言之,在上述實(shí)施例中,短信接入裝置僅工作于客戶端模式下,數(shù)據(jù)發(fā)送模塊處理所有的上傳短信,數(shù)據(jù)接收模塊處理所有的下發(fā)短信;在本實(shí)施例中,短信接入裝置工作于客戶端和服務(wù)端結(jié)合的模式,客戶端模塊負(fù)責(zé)上傳短信,服務(wù)端模塊負(fù)責(zé)下發(fā)短信。
[0069]進(jìn)一步地,所述協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類型包括:正確響應(yīng)和錯(cuò)誤響應(yīng);
[0070]所述數(shù)據(jù)接收模塊具體可以用于:
[0071]在判斷到解包后的協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類型為正確響應(yīng)時(shí),從所述等待響應(yīng)隊(duì)列中讀取對(duì)應(yīng)的原始發(fā)送數(shù)據(jù),并調(diào)用所述短信網(wǎng)關(guān)中的流量統(tǒng)計(jì)模塊進(jìn)行發(fā)送流量統(tǒng)計(jì);
[0072]在判斷到解包后的協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類型為錯(cuò)誤響應(yīng)時(shí),則丟棄與類型為錯(cuò)誤響應(yīng)的所述協(xié)議響應(yīng)數(shù)據(jù);或獲取與類型為錯(cuò)誤響應(yīng)的所述協(xié)議響應(yīng)數(shù)據(jù)對(duì)應(yīng)的原始發(fā)送數(shù)據(jù),并將所述對(duì)應(yīng)的原始發(fā)送數(shù)據(jù)作為待發(fā)送數(shù)據(jù),重新寫入所述短信發(fā)送隊(duì)列,以使所述數(shù)據(jù)發(fā)送模塊調(diào)用所述協(xié)議處理模塊按照設(shè)定協(xié)議對(duì)從所述短信發(fā)送隊(duì)列獲取的由所述數(shù)據(jù)接收模塊寫入的待發(fā)送數(shù)據(jù)進(jìn)行打包,并將由所述數(shù)據(jù)接收模塊寫入的所述待發(fā)送數(shù)據(jù)經(jīng)打包后形成的待發(fā)送數(shù)據(jù)包通過(guò)所述第一鏈路重新發(fā)送至所述短信中心,以及將重新發(fā)送的待發(fā)送數(shù)據(jù)重新寫入所述等待響應(yīng)隊(duì)列。
[0073]本實(shí)施例中,所述數(shù)據(jù)接收模塊判斷解包后的協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類型,并根據(jù)所述判斷結(jié)果,進(jìn)行相應(yīng)處理,與上述實(shí)施例中數(shù)據(jù)接收模塊的功能一致,不再贅述。
[0074]其中,協(xié)議處理模塊用于按照設(shè)定協(xié)議對(duì)所述數(shù)據(jù)發(fā)送模塊獲取的待發(fā)送數(shù)據(jù)進(jìn)行打包;還用于按照設(shè)定協(xié)議對(duì)所述數(shù)據(jù)接收模塊接收的所述協(xié)議響應(yīng)數(shù)據(jù)進(jìn)行解包。
[0075]其中,所述超時(shí)處理模塊的功能與上述實(shí)施例中超時(shí)處理模塊的功能一致,具體為,用于定時(shí)掃描所述等待響應(yīng)隊(duì)列,檢查是否存在已經(jīng)成功發(fā)送但超時(shí)沒(méi)有收到響應(yīng)的原始發(fā)送數(shù)據(jù),若是,則丟棄該原始發(fā)送數(shù)據(jù),或?qū)⒃撛及l(fā)送數(shù)據(jù)寫入短信發(fā)送隊(duì)列,并觸發(fā)所述數(shù)據(jù)發(fā)送模塊執(zhí)行重發(fā)操作,不再贅述。
[0076]其中,所述監(jiān)聽服務(wù)模塊用于在監(jiān)聽到所述短信中心通過(guò)所述第二鏈路發(fā)送業(yè)務(wù)請(qǐng)求時(shí),啟動(dòng)與業(yè)務(wù)請(qǐng)求數(shù)量相同的請(qǐng)求處理模塊。
[0077]換言之,監(jiān)聽服務(wù)模塊只有在既做客戶端又做服務(wù)端模式下才有,它監(jiān)聽短信中心的業(yè)務(wù)請(qǐng)求,一旦監(jiān)聽到一個(gè)請(qǐng)求就啟動(dòng)一個(gè)請(qǐng)求處理模塊負(fù)責(zé)與短信中心進(jìn)行通訊。根據(jù)短信協(xié)議的規(guī)定,請(qǐng)求模塊可能會(huì)只有一個(gè)或有多個(gè)。
[0078]請(qǐng)參閱圖2b,為本發(fā)明實(shí)施例二提供的短信接入裝置中一種監(jiān)聽服務(wù)模塊的工作流程示意圖。該監(jiān)聽服務(wù)模塊阻塞監(jiān)聽所述短信中心通過(guò)所述第二鏈路發(fā)送的業(yè)務(wù)請(qǐng)求,在監(jiān)聽到一個(gè)業(yè)務(wù)請(qǐng)求時(shí),啟動(dòng)一個(gè)請(qǐng)求處理模塊進(jìn)行處理,并繼續(xù)執(zhí)行阻塞監(jiān)聽下一個(gè)業(yè)務(wù)請(qǐng)求的操作,在未監(jiān)聽到業(yè)務(wù)請(qǐng)求時(shí),繼續(xù)執(zhí)行阻塞監(jiān)聽下一個(gè)業(yè)務(wù)請(qǐng)求的操作。
[0079]請(qǐng)參閱圖2c,為本發(fā)明實(shí)施例二提供的短信接入裝置中一種請(qǐng)求處理模塊的工作流程示意圖。所述請(qǐng)求處理模塊用于在啟動(dòng)后,對(duì)所述短信中心的身份進(jìn)行認(rèn)證,并在認(rèn)證通過(guò)(也即身份合法)時(shí),通過(guò)所述第二鏈路超時(shí)接收所述短信中心下發(fā)的業(yè)務(wù)請(qǐng)求數(shù)據(jù);調(diào)用所述協(xié)議處理模塊按照所述設(shè)定協(xié)議對(duì)接收的業(yè)務(wù)請(qǐng)求數(shù)據(jù)進(jìn)行解包,并將所述解包后的數(shù)據(jù)寫入所述短信網(wǎng)關(guān)中的短信接收隊(duì)列;之后