取的由與所述短信網(wǎng)關(guān)連接的應(yīng)用系統(tǒng)寫(xiě)入的待發(fā)送數(shù)據(jù)進(jìn)行打包。
[0032]換言之,所述數(shù)據(jù)發(fā)送模塊執(zhí)行的獲取待發(fā)送數(shù)據(jù)的操作可以具體為:從所述短信網(wǎng)關(guān)中的短信發(fā)送隊(duì)列中獲取待發(fā)送數(shù)據(jù),其中該待發(fā)送數(shù)據(jù)是由與所述短信網(wǎng)關(guān)連接的應(yīng)用系統(tǒng)寫(xiě)入到短信發(fā)送隊(duì)列中的。
[0033]進(jìn)一步地,所述數(shù)據(jù)發(fā)送模塊還可優(yōu)選用于:在從所述短信網(wǎng)關(guān)中的短信發(fā)送隊(duì)列中沒(méi)有獲取到由與所述短信網(wǎng)關(guān)連接的應(yīng)用系統(tǒng)寫(xiě)入的待發(fā)送數(shù)據(jù)時(shí),通過(guò)所述第一鏈路向所述短信中心發(fā)送鏈路測(cè)試包,通過(guò)發(fā)送鏈路測(cè)試包可以保持第一鏈路的有效持續(xù)連接,不致斷開(kāi)。
[0034]請(qǐng)參閱圖lc,為本發(fā)明實(shí)施例一提供的短信接入裝置中一種數(shù)據(jù)發(fā)送模塊的工作流程示意圖。該數(shù)據(jù)發(fā)送模塊首先獲取套接字(socket)參數(shù);超時(shí)(一種socket通信協(xié)議的設(shè)置模式)從短信發(fā)送隊(duì)列中讀數(shù)據(jù),如果有待發(fā)送數(shù)據(jù),則調(diào)用協(xié)議處理模塊將數(shù)據(jù)打包后,發(fā)送到短信中心,具體為通過(guò)第一鏈路發(fā)送至短信中心;發(fā)送成功則將發(fā)送的原始數(shù)據(jù)寫(xiě)入等待響應(yīng)隊(duì)列,并返回超時(shí)執(zhí)行從短信發(fā)送隊(duì)列中讀數(shù)據(jù)的操作;如果短信發(fā)送隊(duì)列無(wú)待發(fā)送數(shù)據(jù),則向所述短信中心發(fā)送鏈路測(cè)試包,如果發(fā)送成功,則返回超時(shí)執(zhí)行從短信發(fā)送隊(duì)列中讀數(shù)據(jù)的操作。
[0035]進(jìn)一步地,所述數(shù)據(jù)發(fā)送模塊還可優(yōu)選用于:在從所述短信網(wǎng)關(guān)中的短信發(fā)送隊(duì)列中獲取到由與所述短信網(wǎng)關(guān)連接的應(yīng)用系統(tǒng)寫(xiě)入的當(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ù)。
[0036]本方式適用于對(duì)流量有要求的短信協(xié)議,通過(guò)將等待響應(yīng)隊(duì)列中未接收到響應(yīng)的、但已經(jīng)發(fā)送的待發(fā)送數(shù)據(jù)的數(shù)量與預(yù)設(shè)流量發(fā)送控制窗口比較,根據(jù)比較結(jié)果決定是否打包并發(fā)送獲取的當(dāng)前待發(fā)送數(shù)據(jù),可以實(shí)現(xiàn)流量控制。
[0037]請(qǐng)參閱圖ld,為本發(fā)明實(shí)施例一提供的短信接入裝置中一種數(shù)據(jù)接收模塊的一種工作流程示意圖。該數(shù)據(jù)接收模塊首先讀取socket參數(shù);通過(guò)所述第一鏈路從所述短信中心阻塞接收數(shù)據(jù),在接收成功時(shí),調(diào)用所述協(xié)議處理模塊按照設(shè)定協(xié)議對(duì)接收到的數(shù)據(jù)進(jìn)行解包;判斷解包后的數(shù)據(jù)的類(lèi)型,并根據(jù)所述判斷結(jié)果,進(jìn)行相應(yīng)分類(lèi)處理。
[0038]其中,接收的數(shù)據(jù)的類(lèi)型包括協(xié)議響應(yīng)數(shù)據(jù)和業(yè)務(wù)請(qǐng)求數(shù)據(jù)。
[0039]下面分別介紹數(shù)據(jù)接收模塊接收到協(xié)議響應(yīng)數(shù)據(jù)時(shí)的處理流程以及接收到業(yè)務(wù)請(qǐng)求數(shù)據(jù)時(shí)的處理流程。
[0040]數(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)類(lèi)型,并根據(jù)所述判斷結(jié)果,進(jìn)行相應(yīng)處理;以及將解包后的協(xié)議響應(yīng)數(shù)據(jù)寫(xiě)入所述短信網(wǎng)關(guān)中的等待響應(yīng)隊(duì)列;其中,所述協(xié)議響應(yīng)數(shù)據(jù)由所述短信中心在成功接收到所述數(shù)據(jù)發(fā)送模塊發(fā)送的待發(fā)送數(shù)據(jù)包并進(jìn)行響應(yīng)后生成。
[0041]其中,所述協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類(lèi)型包括:正確響應(yīng)和錯(cuò)誤響應(yīng)。
[0042]所述數(shù)據(jù)接收模塊根據(jù)所述判斷結(jié)果,進(jìn)行相應(yīng)處理,具體可以包括:
[0043]在判斷到解包后的協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類(lèi)型為正確響應(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ì);
[0044]在判斷到解包后的協(xié)議響應(yīng)數(shù)據(jù)的響應(yīng)類(lèi)型為錯(cuò)誤響應(yīng)時(shí),則丟棄與類(lèi)型為錯(cuò)誤響應(yīng)的所述協(xié)議響應(yīng)數(shù)據(jù);或獲取與類(lèi)型為錯(cuò)誤響應(yīng)的所述協(xié)議響應(yīng)數(shù)據(jù)對(duì)應(yīng)的原始發(fā)送數(shù)據(jù),并將所述對(duì)應(yīng)的原始發(fā)送數(shù)據(jù)作為待發(fā)送數(shù)據(jù),重新寫(xiě)入所述短信發(fā)送隊(duì)列,以使所述數(shù)據(jù)發(fā)送模塊調(diào)用所述協(xié)議處理模塊按照設(shè)定協(xié)議對(duì)從所述短信發(fā)送隊(duì)列獲取的由所述數(shù)據(jù)接收模塊寫(xiě)入的待發(fā)送數(shù)據(jù)進(jìn)行打包,并將由所述數(shù)據(jù)接收模塊寫(xiě)入的所述待發(fā)送數(shù)據(jù)經(jīng)打包后形成的待發(fā)送數(shù)據(jù)包通過(guò)所述第一鏈路重新發(fā)送至所述短信中心,以及將重新發(fā)送的待發(fā)送數(shù)據(jù)重新寫(xiě)入所述等待響應(yīng)隊(duì)列。
[0045]請(qǐng)參閱圖le,為本發(fā)明實(shí)施例一提供的短信接入裝置中數(shù)據(jù)接收模塊接收到協(xié)議響應(yīng)數(shù)據(jù)時(shí)的處理流程示意圖。該數(shù)據(jù)接收模塊在通過(guò)所述第一鏈路從所述短信中心接收協(xié)議響應(yīng)數(shù)據(jù)時(shí),調(diào)用所述協(xié)議處理模塊按照設(shè)定協(xié)議對(duì)所述協(xié)議響應(yīng)數(shù)據(jù)進(jìn)行解包;從等待響應(yīng)隊(duì)列中讀取相應(yīng)的原始數(shù)據(jù),判斷解包后的協(xié)議響應(yīng)數(shù)據(jù)是否是對(duì)所述原始數(shù)據(jù)的正確響應(yīng),若是,則對(duì)所述原始發(fā)送數(shù)據(jù)進(jìn)行流量統(tǒng)計(jì)處理,若否,則執(zhí)行上述丟棄操作或重新寫(xiě)入操作。
[0046]請(qǐng)參閱圖1f,為本發(fā)明實(shí)施例一提供的短信接入裝置中數(shù)據(jù)接收模塊接收到業(yè)務(wù)請(qǐng)求數(shù)據(jù)時(shí)的處理流程示意圖。
[0047]所述數(shù)據(jù)接收模塊還用于調(diào)用所述協(xié)議處理模塊按照所述設(shè)定協(xié)議對(duì)通過(guò)所述第一鏈路從所述短信中心接收的業(yè)務(wù)請(qǐng)求數(shù)據(jù)進(jìn)行解包,并將所述解包后的數(shù)據(jù)寫(xiě)入所述短信網(wǎng)關(guān)中的短信接收隊(duì)列;
[0048]所述協(xié)議處理模塊還用于按照所述設(shè)定協(xié)議對(duì)所述數(shù)據(jù)接收模塊接收的業(yè)務(wù)請(qǐng)求數(shù)據(jù)進(jìn)行解包。
[0049]所述數(shù)據(jù)接收模塊還可以用于在調(diào)用所述協(xié)議處理模塊按照所述設(shè)定協(xié)議對(duì)通過(guò)所述第一鏈路從所述短信中心接收的業(yè)務(wù)請(qǐng)求數(shù)據(jù)進(jìn)行解包之后,調(diào)用所述短信網(wǎng)關(guān)中的流量統(tǒng)計(jì)模塊進(jìn)行接收流量統(tǒng)計(jì)。
[0050]協(xié)議處理模塊用于按照設(shè)定協(xié)議對(duì)所述數(shù)據(jù)發(fā)送模塊獲取的待發(fā)送數(shù)據(jù)進(jìn)行打包;還用于按照設(shè)定協(xié)議對(duì)所述數(shù)據(jù)接收模塊接收的所述協(xié)議響應(yīng)數(shù)據(jù)進(jìn)行解包。
[0051]超時(shí)處理模塊用于定時(shí)掃描所述等待響應(yīng)隊(duì)列,檢查是否存在已經(jīng)成功發(fā)送但超時(shí)沒(méi)有收到響應(yīng)的原始發(fā)送數(shù)據(jù),若是,則丟棄該原始發(fā)送數(shù)據(jù),或?qū)⒃撛及l(fā)送數(shù)據(jù)寫(xiě)入短信發(fā)送隊(duì)列,并觸發(fā)所述數(shù)據(jù)發(fā)送模塊執(zhí)行重發(fā)操作。
[0052]需要說(shuō)明的是,優(yōu)選是,執(zhí)行將該原始發(fā)送數(shù)據(jù)寫(xiě)入短信發(fā)送隊(duì)列,并觸發(fā)所述數(shù)據(jù)發(fā)送模塊執(zhí)行重發(fā)操作,以提高將從應(yīng)用系統(tǒng)獲取的待發(fā)送數(shù)據(jù)發(fā)送至短信中心的成功率。
[0053]請(qǐng)參閱圖lg,為本發(fā)明實(shí)施例一提供的短信接入裝置中一種超時(shí)處理模塊的一種工作流程示意圖。該超時(shí)處理模塊在檢查時(shí)間未到時(shí),處于睡眠(sle印)狀態(tài),在到達(dá)檢查時(shí)間時(shí),開(kāi)始定時(shí)掃描所述等待響應(yīng)隊(duì)列,具體包括:讀取等待響應(yīng)隊(duì)列中的消息數(shù)目,檢測(cè)消息數(shù)據(jù)是否達(dá)到檢查閾值,若是,則依次讀取等待響應(yīng)隊(duì)列中的消息,在消息未讀取完,但檢測(cè)到消息超時(shí),進(jìn)行對(duì)檢測(cè)到超時(shí)的消息進(jìn)行超時(shí)處理,超時(shí)處理表示對(duì)超時(shí)未接收到響應(yīng)的協(xié)議數(shù)據(jù)響應(yīng)的處理,可以采取丟棄,重發(fā),還有可能認(rèn)為鏈路出現(xiàn)問(wèn)題,關(guān)閉鏈路等,然后返回依次讀取等待響應(yīng)隊(duì)列中的消息的操作;如果消息未超時(shí),則寫(xiě)入等待響應(yīng)隊(duì)列,然后返回依次讀取等待響應(yīng)隊(duì)列中的消息的操作;在依次讀取等待響應(yīng)隊(duì)列中的消息時(shí),如果消息已經(jīng)讀取完,則再次進(jìn)入睡眠;在消息數(shù)據(jù)未達(dá)到檢查閾值時(shí),再次進(jìn)入睡眠;在未達(dá)到檢查時(shí)間時(shí),也再次進(jìn)入睡眠。
[0054]本實(shí)施例的技術(shù)方案,提供了短信網(wǎng)關(guān)中的短信接入裝置,主要負(fù)責(zé)短信網(wǎng)關(guān)與短信中心(SMSC)通過(guò)標(biāo)準(zhǔn)短信協(xié)議交換短信數(shù)據(jù),實(shí)現(xiàn)了應(yīng)用系統(tǒng)與用戶(hù)之間的數(shù)據(jù)交互。
[0055]需要說(shuō)明的是,短信接入裝置適用的設(shè)定協(xié)議通常包括:短信點(diǎn)對(duì)點(diǎn)協(xié)議(SMPP)協(xié)議、中國(guó)聯(lián)通短信網(wǎng)關(guān)系統(tǒng)接口協(xié)議(SGIP)和中國(guó)移動(dòng)點(diǎn)對(duì)點(diǎn)協(xié)議(CMPP)。其中,SMPP協(xié)議要求SP側(cè)只能為客戶(hù)端,上傳短信(例如,把應(yīng)用系統(tǒng)的短信推送給短信中心側(cè)的手機(jī)用戶(hù),這時(shí)短信中心的響應(yīng)數(shù)據(jù)也是通過(guò)同一鏈路發(fā)給客戶(hù)端的)和下發(fā)短信(比如用戶(hù)通過(guò)手機(jī)和短信中心,再經(jīng)短信網(wǎng)關(guān)把交易信息下發(fā)到應(yīng)用系統(tǒng))分別用不同的命令向SMSC注冊(cè)。SGIP協(xié)議要求雙方互為客戶(hù)端和服務(wù)端,SP上傳短信需以客