尹 鋒 陳順平 周前偉
〔摘 要〕提出了一種基于客戶機(jī)/服務(wù)器模式的圖書館服務(wù)器遠(yuǎn)程管理系統(tǒng)的設(shè)計(jì)方法,它采用WinSocket信息訪問技術(shù),設(shè)計(jì)出客戶端和服務(wù)器端兩個(gè)子系統(tǒng),給出了數(shù)據(jù)流圖、實(shí)體關(guān)系圖、功能模塊圖和程序流程圖及其部分關(guān)鍵代碼。系統(tǒng)可在機(jī)房無人值守時(shí)對服務(wù)器進(jìn)行遠(yuǎn)程監(jiān)控和維護(hù),保障網(wǎng)絡(luò)系統(tǒng)的正常運(yùn)行。
〔關(guān)鍵詞〕服務(wù)器遠(yuǎn)程管理;WinSocket;客戶端/服務(wù)器模式;系統(tǒng)設(shè)計(jì)
〔中圖分類號〕G250.71 〔文獻(xiàn)標(biāo)識碼〕B 〔文章編號〕1008-0821(2009)01-0078-04
Design and Realization of Server Remote Management System of Library
Yin Feng Chen Shunping Zhou Qianwei
(Library,Changsha University,Changsha 410003,China)
〔Abstract〕A design method of remote management system of library server which based C/S model was introduced in this paper.Two subsystem which included client system and server system by using winsocket technology was designed.Otherwise,the data flow graph and the entity relational graph,the functional module chart and the program flow diagram and the part essential code were given in this paper.The server could be monitored and maintenanced when nobody in computer room in order to ensure normal operation of network.
〔Key words〕server remote management;WinSocket;C/S;system design
目前遠(yuǎn)程控制技術(shù)顯得越來越重要[1]。如:遠(yuǎn)程計(jì)算機(jī)維護(hù)、移動辦公、遠(yuǎn)程教學(xué)等等。高校圖書館服務(wù)器儲藏了大量豐富的數(shù)字資源,維護(hù)其正常運(yùn)行非常重要。利用遠(yuǎn)程管理技術(shù)可在機(jī)房無人值守時(shí)對服務(wù)器進(jìn)行監(jiān)控和維護(hù),以滿足廣大讀者查詢文獻(xiàn)信息的需要[2]。本文利用基于TCP/IP網(wǎng)絡(luò)協(xié)議的Socket通信技術(shù)設(shè)計(jì)了一個(gè)遠(yuǎn)程服務(wù)器管理系統(tǒng),能夠有效監(jiān)控服務(wù)器的運(yùn)行狀態(tài),確保圖書館信息網(wǎng)絡(luò)系統(tǒng)的正常服務(wù)。
1 系統(tǒng)開發(fā)原理
本文采用Microsoft Visual C++ 6.0作為開發(fā)工具,因?yàn)閂C++ 6.0中有關(guān)網(wǎng)絡(luò)通信的Socket API函數(shù)豐富,功能強(qiáng)大,完全能夠?qū)崿F(xiàn)設(shè)計(jì)要求[3]。
Socket(套接字)的原意是插座。在Socket下編程,應(yīng)用程序一旦申請到一個(gè)Socket,就相當(dāng)于獲得一個(gè)與其他應(yīng)用程序通信的輸入輸出接口,而該應(yīng)用程序到底與哪個(gè)應(yīng)用程序通信,取決于其IP地址[4]。執(zhí)行跨機(jī)應(yīng)用進(jìn)程時(shí)要在網(wǎng)絡(luò)的每一端建立套接字,2個(gè)套接字之間建立連接后,就可以通過套接字的“讀”、“寫”操作實(shí)現(xiàn)網(wǎng)絡(luò)通信功能。Socket接口介于應(yīng)用程序與硬件之間,它可以提供標(biāo)準(zhǔn)函數(shù)以符合不同的網(wǎng)絡(luò)硬件規(guī)格[5]。
對Socket的理解可以簡化為:它是封裝了數(shù)據(jù)流(Stream)的從機(jī)器到機(jī)器的一條軟接線。通過這條軟接線,并借助于線兩端的收發(fā)程序,網(wǎng)絡(luò)上的機(jī)器間實(shí)現(xiàn)了信息的交流與互通。分離在服務(wù)器端和客戶端的應(yīng)用程序可以通過調(diào)用Socket接口來執(zhí)行預(yù)定的功能。所以,Socket接口的介入使得開發(fā)分布式應(yīng)用程序變得更為簡單。
套接字(socket)在網(wǎng)絡(luò)軟件設(shè)計(jì)中有著極大的應(yīng)用。如果把機(jī)器比作房間,那么創(chuàng)建了Socket(套接字)的程序就是房間的后門[6]。只要了解該Socket接收數(shù)據(jù)的協(xié)議(后門的鑰匙),就可以輕松地打開房門而進(jìn)入該房間。為了網(wǎng)絡(luò)信息服務(wù)的安全,我們有必要在服務(wù)器端控制來自客戶的信息訪問行為。Socket正是迎合這種需求而被廣泛應(yīng)用的一種網(wǎng)絡(luò)信息訪問技術(shù)。
2 系統(tǒng)分析
2.1 數(shù)據(jù)流分析
系統(tǒng)的數(shù)據(jù)傳遞(流動)是以建立了連接的客戶端和服務(wù)器端為前提的。服務(wù)器端程序運(yùn)行后時(shí)刻處于監(jiān)聽狀態(tài),一旦有客戶端的連接請求,它就會去接收,并生成一個(gè)與來訪客戶端傳送信息的Socket通信接口。利用這一特性,我們可以在客戶端界面設(shè)計(jì)一些按鈕,設(shè)置好自己感興趣的各種服務(wù)器信息參數(shù),然后點(diǎn)擊按鈕要求服務(wù)器執(zhí)行一些遠(yuǎn)程操作,就如同在本地操作服務(wù)器一樣。點(diǎn)擊事件發(fā)生后,客戶端捕捉這一消息并記錄下來,然后生成相應(yīng)的命令消息并保存于臨時(shí)緩沖區(qū)。當(dāng)協(xié)議要發(fā)送信息時(shí),就把臨時(shí)緩沖區(qū)的內(nèi)容放到緩沖區(qū)并完成發(fā)送。服務(wù)器端通過協(xié)議把客戶端發(fā)送過來的內(nèi)容收存到接收緩沖區(qū),然后分析緩沖區(qū)內(nèi)的命令參數(shù),進(jìn)行相應(yīng)的處理。其執(zhí)行結(jié)果反饋給客戶端顯示。這樣,一次通信過程就順利完成了。下面是系統(tǒng)的數(shù)據(jù)流圖(圖1)。
2.2 實(shí)體關(guān)系分析
系統(tǒng)的實(shí)體可分為客戶端和服務(wù)端兩個(gè)。雙方都有接收/發(fā)送緩沖區(qū),通信用的Socket接口,通信端口等。不同的是,服務(wù)端有一個(gè)監(jiān)聽用的Socket對象、IP地址、命令解析器等;客戶端有命令請求接收器(也叫消息池),并且一個(gè)服務(wù)端可以同時(shí)連接多個(gè)與之匹配的相應(yīng)客戶端。因此它們之間的關(guān)系是一對多的關(guān)系。系統(tǒng)的基本ER圖如圖2所示。
3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)分為4個(gè)模塊,即管理員登錄模塊,文件上傳、下載模塊,進(jìn)程管理模塊和顯示服務(wù)器參數(shù)模塊。主要采用Winsocket編程接口來實(shí)現(xiàn)客戶端和服務(wù)器之間的通信,用到的數(shù)據(jù)結(jié)構(gòu)有文件屬性結(jié)構(gòu)、進(jìn)程信息結(jié)構(gòu)、鼠標(biāo)信息結(jié)構(gòu)等。系統(tǒng)要求先運(yùn)行服務(wù)端程序,服務(wù)端程序主要是用SDK開發(fā),沒有具體的界面,是隱藏運(yùn)行的。它有一個(gè)總(入口)開關(guān)函數(shù)負(fù)責(zé)客戶端發(fā)送的命令消息的解析分解和分發(fā)處理。客戶端有用戶登錄界面,使用者輸入合法的用戶名和密碼才能登錄到客戶端,接下來才有可能實(shí)現(xiàn)對服務(wù)器的有效控制。菜單命令接口有文件上傳、下載,運(yùn)行服務(wù)器上的程序或者打開文件等。
管理員登錄模塊主要是驗(yàn)證用戶身份的合法性。文件上傳和下載是有效的管理服務(wù)器資源的一個(gè)最基本的途徑。進(jìn)程管理模塊的主要功能是在本地客戶端上用一個(gè)窗口顯示遠(yuǎn)程服務(wù)器端上運(yùn)行者的進(jìn)程,并能對進(jìn)程進(jìn)行實(shí)時(shí)的觀察監(jiān)控,能對進(jìn)程進(jìn)行一些相應(yīng)的管理,如暫停、結(jié)束等操作,能向服務(wù)器的屏幕上寫一些文本信息,能控制服務(wù)器端鼠標(biāo)的鎖定與解鎖,駕馭服務(wù)器上相關(guān)程序、文件的打開或者運(yùn)行。顯示服務(wù)器參數(shù)模塊主要是顯示當(dāng)前正在運(yùn)行的系統(tǒng)服務(wù)器端的一些計(jì)算機(jī)情況和操作系統(tǒng)信息等等,基本上是一些與遠(yuǎn)程服務(wù)器狀態(tài)息息相關(guān)的的參數(shù)信息。
系統(tǒng)實(shí)現(xiàn)的主要技術(shù)難點(diǎn)在于怎樣定義合理的數(shù)據(jù)結(jié)構(gòu)來完成各種信息的傳遞與接收,因?yàn)槲募纳蟼?、下載涉及到文件格式的一致性問題。系統(tǒng)功能模塊如圖3所示。
3.2 客戶端設(shè)計(jì)
客戶端設(shè)計(jì)思路如流程圖(圖4)所示。
客戶端部分關(guān)鍵代碼如下:
void CZclientDlg::OnBtnProcess()
{ ∥進(jìn)程管理按鈕點(diǎn)擊事件消息響應(yīng)函數(shù)
UpdateData(TRUE);
BeginWaitCursor();
if(!pProcessDlg)
{ pProcessDlg=new CProcessManageDlg(this);
pProcessDlg->Create(IDD_DIALOG_PROCESSMANAGER,this);
pProcessDlg->ShowWindow(SW_HIDE);
}
else
{ pProcessDlg->m_ctlProcess.ResetContent(); }
strcpy(chrMission,″ 霍山县| 运城市| 盱眙县| 平阴县| 永福县| 鹤峰县| 白银市| 子长县| 丽水市| 桐柏县| 肥城市| 茌平县| 武平县| 蚌埠市| 阜南县| 宿迁市| 平泉县| 柯坪县| 砚山县| 田阳县| 漳州市| 邢台县| 江达县| 东安县| 库伦旗| 临夏县| 三原县| 潼南县| 无锡市| 广元市| 鄂伦春自治旗| 周口市| 阿图什市| 科尔| 平利县| 大石桥市| 维西| 舞阳县| 雷波县| 彩票| 宁德市|