摘 要: 介紹了短信息服務(wù)及其在圖書館查書系統(tǒng)中的應(yīng)用技術(shù),論述該系統(tǒng)的功能及在系統(tǒng)中采用MFC多線程及動(dòng)態(tài)鏈接庫(kù)的實(shí)現(xiàn)方法。
關(guān)鍵詞: 短信息服務(wù) 圖書查詢 多線程 動(dòng)態(tài)鏈接庫(kù)
在飛速發(fā)展的信息技術(shù)領(lǐng)域中,移動(dòng)通信和Internet是兩支突飛猛進(jìn)的支柱產(chǎn)業(yè)?;ヂ?lián)網(wǎng)為人們提供必要的信息資料,移動(dòng)通信讓人們擺脫電話線的束縛,能夠隨時(shí)隨地進(jìn)行交流。而移動(dòng)通信與互聯(lián)網(wǎng)的結(jié)合——移動(dòng)互連則意味著將跨時(shí)空的計(jì)算和全方位的信息置于人們掌心。短信息服務(wù)作為移動(dòng)互連技術(shù)的一種,因其不占用語(yǔ)音通信的信道與費(fèi)用低廉等優(yōu)點(diǎn),目前已在許多領(lǐng)域得到廣泛應(yīng)用。
當(dāng)今社會(huì),人們對(duì)知識(shí)的需求不斷增加,人們常常需要從海量的書籍中來(lái)查找自己需要的信息。網(wǎng)絡(luò)的出現(xiàn)為人們通過(guò)Web查詢書籍提供了一種方便的途徑。利用短消息人們可以隨時(shí)隨地用手機(jī)發(fā)短消息查詢書籍,既方便又快捷,同時(shí),也可為各大書店及圖書館節(jié)省人力物力。
1 短信息服務(wù)
短信息服務(wù)SMS(Short Message Service)是通過(guò)手機(jī)發(fā)送和接收有限長(zhǎng)度的文本信息的功能。一條短信息可以包含160個(gè)英文字母(7位編碼)或70個(gè)非拉丁字母(16位編碼),如中文漢字或阿拉伯字等Unicode編碼。
SMS屬于GSM(Global System for Mobile Communications)第一階段的標(biāo)準(zhǔn)。但目前SMS已經(jīng)被集成到了很多網(wǎng)絡(luò)標(biāo)準(zhǔn)中,GSM、CDMA、TDMA、PHS、PDC等移動(dòng)網(wǎng)絡(luò)都支持SMS,這使得SMS成為一項(xiàng)非常普及的移動(dòng)數(shù)據(jù)業(yè)務(wù)。SMS與話音傳輸及傳真一樣,都是GSM數(shù)字蜂窩移動(dòng)通信網(wǎng)絡(luò)提供的主要電信業(yè)務(wù)。它通過(guò)無(wú)線控制信道進(jìn)行傳輸,經(jīng)短信息業(yè)務(wù)中心完成存儲(chǔ)和前轉(zhuǎn)功能。SMS是非對(duì)稱業(yè)務(wù),它使用SS7信令信道傳輸數(shù)據(jù)分組,即使在業(yè)務(wù)信道處于高峰期的情況下,也照樣可以使用短信息順利通信。它還可以實(shí)現(xiàn)全國(guó)和國(guó)際漫游。
SMS具有收費(fèi)低廉、隨時(shí)隨地、能夠承載多種數(shù)據(jù)、可以實(shí)現(xiàn)推和拉二種不同的工作模式及傳輸安全等優(yōu)點(diǎn),目前已在資訊服務(wù)、移動(dòng)商務(wù)、商務(wù)助理等領(lǐng)域被廣泛應(yīng)用。
2 系統(tǒng)設(shè)計(jì)
短信自動(dòng)查書系統(tǒng)的目標(biāo)就是通過(guò)手機(jī)短信息服務(wù),實(shí)現(xiàn)用戶的無(wú)線信息查詢,快速方便地使圖書查詢業(yè)務(wù)通過(guò)手機(jī)方式完成。
2.1 系統(tǒng)結(jié)構(gòu)
由于采用CMPP接口,移動(dòng)和聯(lián)通不能互發(fā),必須將移動(dòng)和聯(lián)通各開通一個(gè)號(hào)碼,這給管理者和讀者都帶來(lái)不便??紤]到書籍查詢中的業(yè)務(wù)量的實(shí)際情況,采用內(nèi)嵌SIM卡的通信器作為與SMSC(短消息業(yè)務(wù)中心)的通信工具。通信器通過(guò)USB口與計(jì)算機(jī)相聯(lián),啟動(dòng)計(jì)算機(jī)后通信器就處于加電狀態(tài),可進(jìn)行短信收發(fā),通信器內(nèi)最多可保存10條短信。系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

客戶通過(guò)移動(dòng)電話發(fā)送短信到通信器內(nèi)所嵌入的SIM卡的號(hào)碼要求查書。該短信首先通過(guò)GSM網(wǎng)上送到短消息業(yè)務(wù)中心,然后短消息業(yè)務(wù)中心把短消息內(nèi)容下傳到通信器。短消息處理主機(jī)監(jiān)聽到有短消息到來(lái)時(shí),立即讀取通信器,然后分析讀取的內(nèi)容,分解出不同字段的內(nèi)容,存入短消息數(shù)據(jù)庫(kù)中的接收數(shù)據(jù)表中。系統(tǒng)根據(jù)客戶所要查詢的內(nèi)容,啟動(dòng)查詢線程查詢圖書館內(nèi)圖書數(shù)據(jù)庫(kù),把查詢的結(jié)果寫入短消息數(shù)據(jù)庫(kù)的發(fā)送數(shù)據(jù)表中。短消息處理主機(jī)把發(fā)送的內(nèi)容轉(zhuǎn)換成通信可識(shí)別的格式,然后寫入通信器,以短消息的型式返回到客戶的手機(jī)。
2.2 系統(tǒng)功能模塊
在系統(tǒng)需求及功能的分析上,把系統(tǒng)劃分為如圖2所示的子系統(tǒng)和功能模塊。

2.2.1 通信接口子系統(tǒng)
該子系統(tǒng)中硬件的控制較為復(fù)雜,微小的變動(dòng)都有可能導(dǎo)致系統(tǒng)不能正常運(yùn)行。由于對(duì)硬件的訪問(wèn)需求比較固定,所以采用動(dòng)態(tài)鏈接庫(kù)技術(shù)(DLL)來(lái)實(shí)現(xiàn)對(duì)硬件的控制。完成的功能主要包括實(shí)現(xiàn)硬件上的短消息的自動(dòng)接收和發(fā)送、信號(hào)量的獲取、通信器工作狀態(tài)讀取等。
2.2.2 業(yè)務(wù)中心子系統(tǒng)
該子系統(tǒng)主要完成整個(gè)系統(tǒng)的管理及各種數(shù)據(jù)的處理。主要實(shí)現(xiàn)以下基本功能:
(1)系統(tǒng)管理。完成操作員的管理,包括操作員的增加、注銷、權(quán)限的設(shè)置、密碼的設(shè)置及修改;系統(tǒng)參數(shù)的設(shè)置,包括設(shè)置短消息中心號(hào)碼以及圖書數(shù)據(jù)庫(kù)的用戶名、密碼以及短消息的格式。
(2)收信處理。系統(tǒng)啟動(dòng)后創(chuàng)建短消息接收線程,線程不斷查詢通信器。如果有短信接收,通信器立即讀取內(nèi)容,然后分析讀取的內(nèi)容,分解出短消息的內(nèi)容和手機(jī)號(hào)碼,存入收信數(shù)據(jù)表中。接收短消息參數(shù)字符串的格式為:手機(jī)號(hào)|短消息格式|接收日期|接收時(shí)間。
(3)發(fā)送處理。系統(tǒng)定時(shí)查詢發(fā)送表,如果發(fā)送表有內(nèi)容,就創(chuàng)建短消息發(fā)送線程,再把發(fā)送表中的數(shù)據(jù)合成通信器可識(shí)別的格式發(fā)送出去,然后刪除發(fā)送表中已發(fā)送出去的內(nèi)容。發(fā)送短消息參數(shù)字符串的格式為:手機(jī)號(hào)|短消息內(nèi)容|日期|時(shí)間|加密標(biāo)志|發(fā)送等級(jí)。
(4)信息統(tǒng)計(jì)。以短消息數(shù)據(jù)庫(kù)里的內(nèi)容為基礎(chǔ),對(duì)短消息查詢的類別、內(nèi)容、讀者類別、返回結(jié)果等的查詢、匯總統(tǒng)計(jì)、分析,以圖表的形式顯示出來(lái),并可生成用戶指定格式的報(bào)表。
2.2.3 數(shù)據(jù)庫(kù)接口子系統(tǒng)
實(shí)現(xiàn)通過(guò)局域網(wǎng)來(lái)訪問(wèn)圖書信息數(shù)據(jù)庫(kù)。首先根據(jù)短消息數(shù)據(jù)庫(kù)收信表中的內(nèi)容分析要查詢的內(nèi)容和查詢條件,然后生成SQL查詢語(yǔ)句的形式,對(duì)圖書數(shù)據(jù)庫(kù)進(jìn)行查詢,把查詢結(jié)果放到發(fā)件箱。
3 系統(tǒng)實(shí)現(xiàn)中的關(guān)鍵技術(shù)
短消息查書系統(tǒng)采用VC作為開發(fā)工具,短消息數(shù)據(jù)庫(kù)采用SQL Server2000,整個(gè)系統(tǒng)在Windows 2000 Server操作系統(tǒng)下運(yùn)行。
3.1 動(dòng)態(tài)鏈接庫(kù)技術(shù)
動(dòng)態(tài)鏈接庫(kù)是用作共享函數(shù)庫(kù)的可執(zhí)行文件。一般情況下,DLL是一個(gè)庫(kù)中所有函數(shù)的集合,并通過(guò)包含在可執(zhí)行文件中的信息進(jìn)行檢索來(lái)使用。在收發(fā)短信息時(shí)需與通信器交互,這里是通過(guò)動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)的。DLL中的函數(shù)有導(dǎo)出函數(shù)和內(nèi)部函數(shù)二種,導(dǎo)出函數(shù)可以被外部程序調(diào)用,內(nèi)部函數(shù)只能在動(dòng)態(tài)鏈接庫(kù)內(nèi)部使用。
對(duì)通信器控制的動(dòng)態(tài)鏈接庫(kù)提供的導(dǎo)出函數(shù)包括短消息的發(fā)送、接收等

3.2 多線程技術(shù)
Windows是一個(gè)多任務(wù)操作系統(tǒng)。在Win32中,每一個(gè)進(jìn)程可以同時(shí)執(zhí)行多個(gè)線程,這意味著一個(gè)程序可以同時(shí)完成多個(gè)任務(wù)。圖書查詢系統(tǒng)需要對(duì)大型的數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),系統(tǒng)既要進(jìn)行耗時(shí)的工作,又要保證用戶輸入響應(yīng)的及時(shí)性,尤其當(dāng)檢索的數(shù)據(jù)量很大、數(shù)據(jù)處理任務(wù)很重時(shí),如果不采用多線程,檢索時(shí)的漫長(zhǎng)的等待是難以忍受的。在采用多線程時(shí),關(guān)鍵的問(wèn)題是要采取措施來(lái)保持線程間的同步。
短消息查書系統(tǒng)主要包括消息發(fā)送線程、短消息接收線程、圖書數(shù)據(jù)庫(kù)查詢線程。在對(duì)收信箱和發(fā)信箱操作時(shí),使用的是臨界區(qū)(CCriticalSection)同步對(duì)象,對(duì)圖書數(shù)據(jù)庫(kù)的查詢采用信號(hào)量同步機(jī)制,信號(hào)量初始化時(shí)資源計(jì)數(shù)設(shè)置為3,這樣最多三個(gè)查書線程可同時(shí)運(yùn)行,避免因查詢數(shù)據(jù)庫(kù)的線程太多而造成擁塞。
3.3 數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是系統(tǒng)的核心和基礎(chǔ),短消息數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的合理性及優(yōu)劣性將直接影響整個(gè)系統(tǒng)的性能。對(duì)圖書數(shù)據(jù)庫(kù)的訪問(wèn)方式也同樣影響訪問(wèn)數(shù)據(jù)庫(kù)的執(zhí)行效率。在對(duì)短消息數(shù)據(jù)庫(kù)的設(shè)計(jì)中遵循數(shù)據(jù)獨(dú)立性原則,按規(guī)范化設(shè)計(jì)數(shù)據(jù)庫(kù),可減少數(shù)據(jù)間的依賴和數(shù)據(jù)冗余。
在對(duì)圖書數(shù)據(jù)庫(kù)訪問(wèn)時(shí)采用ADO訪問(wèn)數(shù)據(jù)庫(kù)技術(shù)。ADO是基于COM接口的技術(shù),使用這種技術(shù)可以直接對(duì)數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序進(jìn)行訪問(wèn),從而大大提高訪問(wèn)的速度。
ADO的主體接口對(duì)象有三個(gè):ConnectionPtr、CommandPtr和RecordsetPtr。ConnectionPtr返回一個(gè)記錄集或空指針,通常用來(lái)創(chuàng)建一個(gè)數(shù)據(jù)連接;CommandPtr接口返回一個(gè)記錄集,它提供一種簡(jiǎn)單的方法來(lái)執(zhí)行返回記錄集的存儲(chǔ)過(guò)程和SQL語(yǔ)句;RecordsetPtr記錄集對(duì)象,它能夠提供更多的控制功能。
其程序?qū)崿F(xiàn)為:
∷CoInitialize(NULL);
m_connection.CreateInstance(__uuidof(Connection));
m_recordSet.CreateInstance(__uuidof(Recordset));
pConn.CreateInstance(__uuidof(Connection));
pConn->Open(″Provider=SQLOLEDB;SERVER=server;
DATABASE=dbname;UID=user;pwd=password″,″″,″″,-1);
pRs.Open(″select*from cmk where name=msg″,
pConn,adOpenDynamic,adLockOptimistic,
adCmdUnknown);
……
∷CoUninitialize();
4 結(jié)束語(yǔ)
目前移動(dòng)電話的普及已使得SMS的應(yīng)用極為廣泛。本文應(yīng)用SMS技術(shù)通過(guò)使用MFC多線程編程及動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)的自動(dòng)查書系統(tǒng),已經(jīng)在圖書館及書店中得到很好的使用。系統(tǒng)不但方便了圖書的管理,也給人們的學(xué)習(xí)生活帶來(lái)了極大的便利。
參考文獻(xiàn)
1 劉刀桂,孟繁晶.Visual C++實(shí)踐與提高,數(shù)據(jù)庫(kù)篇.北京:中國(guó)鐵道出版社,2001
2 周學(xué)泳,石丹.短消息(SMS)與WAP的開發(fā)及應(yīng)用.北京:電子工業(yè)出版社,2002
3 Petzokd C.Windows程序設(shè)計(jì).北京:北京大學(xué)出版社,1999
4 侯俊杰.深入淺出MFC.武漢:華中科技大學(xué)出版社,2001
