基于Delphi的即時通訊系統(tǒng)的設(shè)計
高速公路要提供安全、快速、高效的服務(wù),離不開監(jiān)控系統(tǒng)的輔助管理,通過監(jiān)控系統(tǒng)采集到的全面和實時的信息,高效地進行路徑誘導(dǎo),從而提高道路的通行能力,以及對突發(fā)事件應(yīng)急指揮的響應(yīng)速度叫在此需求引導(dǎo)之下,管理和運營服務(wù)對聯(lián)網(wǎng)監(jiān)控、全程監(jiān)控的需求也更加迫切。隨著車流量的增加,高速公路上大范圍突發(fā)事件頻頻發(fā)生,緊急情況的交通應(yīng)急指揮問題日益凸顯,單一路段服務(wù)的監(jiān)控系統(tǒng)正朝為多條路徑的路網(wǎng)服務(wù)的方向轉(zhuǎn)化。作為連接各中心的橋梁,信息報送系統(tǒng)成為了監(jiān)控中心的關(guān)鍵。隨著科技水平的飛速發(fā)展,網(wǎng)路通訊應(yīng)用在各個平臺,但大多數(shù)網(wǎng)絡(luò)通訊都需要借助Internet上的服務(wù)器,因此在為用戶帶來便捷的同時也給用戶造成了許多問題,如遭遇到網(wǎng)絡(luò)攻擊、傳播的病毒、破壞防御系統(tǒng)等等。所以為了方便內(nèi)部網(wǎng)絡(luò)的信息交流,比如高速公路網(wǎng)監(jiān)控系統(tǒng)的總中心和分中心之間的溝通,基于局域網(wǎng)的即時通訊工具的開發(fā)成為一種趨勢。在2012年12月全國交通運輸工作會議中指出,要組織實施部省路網(wǎng)管理與應(yīng)急處置平臺建設(shè)和聯(lián)網(wǎng)工程,實現(xiàn)部路網(wǎng)中心與京津冀遼四省市路網(wǎng)中心互聯(lián)互通,指出要加快推進信息化建設(shè),推進具備條件的國家高速公路網(wǎng)區(qū)域貫通,發(fā)揮路網(wǎng)整體效益,加快部路網(wǎng)監(jiān)測與應(yīng)急處置中心建設(shè),推進省級路網(wǎng)中心示范工程和部省平臺聯(lián)網(wǎng)建設(shè),建立基本覆蓋重要國省干線公路出行信息服務(wù)平臺。這表明信息管理工作在突發(fā)事件應(yīng)急管理工作中具有極其重要的地位。
1系統(tǒng)總體設(shè)計的理論基礎(chǔ)
1.1C/S軟件架構(gòu)
C/S結(jié)構(gòu),即大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷叫目前,大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server應(yīng)用都可以進行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件,因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。
C/S工作模式
Client和Server(Client/Server或客戶/服務(wù)器模式)常常分別處在相距很遠的兩臺計算機上。Client程序的任務(wù)是將用戶的要求提交給Server程序,再將Server程序返回的結(jié)果以特定的形式顯示給用戶;Server程序的任務(wù)是接收客戶程序提出的服務(wù)請求,進行相應(yīng)的處理,再將結(jié)果返回給客戶程序。
傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。
C/S結(jié)構(gòu)的優(yōu)點
C/S結(jié)構(gòu)的優(yōu)點是C/S架構(gòu)的界面和操作可以很豐富,很多工作可以在客戶端處理后再提交給服務(wù)器,故能充分發(fā)揮客戶端PC的處理能力,而且客戶端響應(yīng)速度快。其缺點主要有以下幾個:
第一,c/s結(jié)構(gòu)只適用于局域網(wǎng)。隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動辦公和分布式辦公越來越普及,這需要系統(tǒng)具有擴展性。這種方式遠程訪問需要專門的技術(shù),同時要對系統(tǒng)進行專門的設(shè)計來處理分布式的數(shù)據(jù)。
第二,客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺電腦出問題,如病毒、硬件損壞,都需要進行安裝或維護。特別是有很多分部或?qū)Yu店的情況,不是工作量的問題,而是路程的問題。還有,系統(tǒng)軟件升級時,每一臺客戶機需要重新安裝,其維護和升級成本非常高。
第三是對客戶端的操作系統(tǒng)一般也會有限制。
B/S與C/S的區(qū)別
C/S和B/S并沒有本質(zhì)的區(qū)別,B/S是基于特定通信協(xié)議(HTTP)的C/S架構(gòu),是特殊的C/S架構(gòu),而B/S的提出也是為了滿足瘦客戶端和一體化客戶端的需要。相比而言,B/S架構(gòu)可以節(jié)約客戶端更新、維護等的成本,卻要受到通信協(xié)議的制約。
1.2用戶數(shù)據(jù)報協(xié)議(UDP)
UDP協(xié)議是英文UserDatagramProtocol的縮寫,即用戶數(shù)據(jù)報協(xié)議,主要用來支持那些需要在計算機之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。
1.2.1UDP的概述
UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流壓縮成數(shù)據(jù)報的形式[4]。UDP報頭由4個域組成,其中每個域各占用2個字節(jié),具體如下:
源端口號:UDP協(xié)議使用端口號為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。數(shù)據(jù)發(fā)送一方(可以是客戶端或服務(wù)器端)將UDP數(shù)據(jù)報通過源端口發(fā)送出去。因為UDP報頭使用兩個字節(jié)存放端口號,所以端口號的有效范圍是從0~65535。一般來說,大于49151的端口號都代表動態(tài)端口。
目標端口號:數(shù)據(jù)接收一方則通過目標端口接收數(shù)據(jù)。
數(shù)據(jù)報長度:數(shù)據(jù)報的長度是指包括報頭和數(shù)據(jù)部分在內(nèi)的總的字節(jié)數(shù),從理論上說,包含報頭在內(nèi)的數(shù)據(jù)報的最大長度為65535字節(jié)。不過,一些實際應(yīng)用往往會限制數(shù)據(jù)報的大小,有時會降低到8192字節(jié)。
校驗值:UDP協(xié)議使用報頭中的校驗值來保證數(shù)據(jù)的安全。如果某個數(shù)據(jù)報在傳輸過程中被第三方篡改或者由于線路噪聲等原因受到損壞,發(fā)送和接收方的校驗計算值將不會相符,由此UDP協(xié)議可以檢測是否出錯。
1.2.2UDP與TCP的區(qū)別
UDP和TCP協(xié)議的主要區(qū)別是兩者在如何實現(xiàn)信息的可靠傳遞方面不同。UDP是一個無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當它想傳送時就簡單地抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地扔到網(wǎng)絡(luò)上。由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護連接狀態(tài),包括收發(fā)狀態(tài)等。通常人們把UDP協(xié)議稱為不可靠的傳輸協(xié)議。TCP協(xié)議中包含了專門的傳遞保證機制,當數(shù)據(jù)接收方收到來自發(fā)送方的信息時,會自動向發(fā)送方發(fā)出確認消息;發(fā)送方只有在接收到該確認消息之后才繼續(xù)傳送其他信息,否則將一直等待,直到收到確認信息為止。
既然UDP不如TCP可靠,選擇它的原因是什么呢?原因就是UDP具有TCP所望塵莫及的速度優(yōu)勢。雖然TCP協(xié)議擁有安全保障功能,但是在實際執(zhí)行的過程中會使速度受到嚴重影響,提供安全的同時它會占用大量的系統(tǒng)開銷。反之,UDP由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應(yīng)用來完成,極大降低了執(zhí)行時間,使速度得到了保證。
廣播(BroadCast)
廣播的優(yōu)點是網(wǎng)絡(luò)設(shè)備簡單,維護簡單,布網(wǎng)成本低廉;由于服務(wù)器不用向每個客戶機單獨發(fā)送數(shù)據(jù),所以服務(wù)器流量負載極低。
廣播的缺點是無法針對每個客戶的要求和時間及時提供個性化服務(wù);網(wǎng)絡(luò)允許服務(wù)器提供數(shù)據(jù)的帶寬有限,客戶端的最大帶寬等于服務(wù)總帶寬。
Indy介紹
InternetDirect(Indy)是一組開放源代碼的Internet組件,涵蓋了幾乎所有流行的Internet協(xié)議。Indy用Delphi編寫,被包含在Delphi6、Kylix1和C++Builder6及以上各個版本的Borland開發(fā)環(huán)境中。Indy使用了阻塞式Socket調(diào)用方式。阻塞式訪問更像是文件存取。當你讀取數(shù)據(jù),或是寫入數(shù)據(jù)時,讀取和寫入函數(shù)將一直等到相應(yīng)的操作完成后才返回。本設(shè)計使用Indy來實現(xiàn)系統(tǒng)的廣播等功能。
2系統(tǒng)的主要界面設(shè)計
2.1系統(tǒng)登錄界面的設(shè)計
用戶通過輸入正確的用戶名與密碼可以進入系統(tǒng)的主界面。登錄界面用的主要組件介紹如下[1'2]:
Image:實現(xiàn)界面圖片的插入。
Lable:實現(xiàn)“用戶名”、“輸入密碼”“確認密碼"的標簽顯示。
Edit:實現(xiàn)輸入框功能。
Button:"確定"、"取消"按鈕,在Button鍵的Onclick事件中編寫代碼。點擊按鈕時,即可以分別激發(fā)相應(yīng)的事件。
圖1所示是登錄界面的效果示意圖。
圖1 登錄界面的效果圖
2.2主界面的設(shè)計
類似于QQ界面,主界面的設(shè)計用來顯示聯(lián)系人,并且進行聯(lián)系人的增加、刪減等。主要組件介紹:
MainMenu:主菜單控件Delphi7提供了兩種菜單控件:主菜單(MainMenu)和快捷式菜單(PopupMenu),它們都在Standard選項卡中。用鼠標雙擊MainMenu圖標,打開菜單設(shè)計器,然后進行菜單項的編輯。主界面中選用此組件是為了使各功能菜單在未使用的狀態(tài)下隱藏起來,從而做到界面的簡潔和規(guī)劃整齊。從高速公路網(wǎng)監(jiān)控系統(tǒng)的實際應(yīng)用出發(fā),設(shè)置了三項主功能菜單,即聯(lián)系人、關(guān)注(路段)、信息記錄。
ToolBar:工具欄控件。使用工具欄是為了用戶的操作方便,通過工具欄中的按鈕可以直接調(diào)用菜單中最常用的命令,然后通過ImageList控件中的圖片文件為ToolBar中增加的按鈕添加圖片。通常的按鈕只有圖片沒有文字,為了給用戶對按鈕實現(xiàn)的功能提供相關(guān)的提示信息,可通過設(shè)置每個按鈕的Hint屬性來實現(xiàn)。
Combobox:組合框控件。主界面選用Combobox控件來實現(xiàn)聯(lián)系人的列表顯示。將控件的Style屬性設(shè)置為csDropDown,既可以在編輯框中輸入,也可以通過下拉列表選擇項目。
Edit:實現(xiàn)輸入將要查找、添加、刪除的聯(lián)系人名稱。
圖2所示是主界面的效果圖。
圖2 主界面的效果圖
2.3會話界面的設(shè)計
會話界面用于實現(xiàn)雙方消息的收發(fā)、提醒、消息記錄的
保存和刪除等功能。圖3所示是其會話界面的效果圖。
圖3 會話界面的效果圖
3系統(tǒng)測試結(jié)果
分別運行系統(tǒng)的客戶端和服務(wù)端。在客戶端界面上,點擊“查找”按鈕,彈出一個GroupBox"精確查找”,輸入所在局域網(wǎng)的IP地址、端口號(port)以及用戶名。點擊“連接”按鈕,在消息輸入框中輸入將要發(fā)送的消息,然后點擊“發(fā)送”按鈕,消息就會同時顯示在客戶端以及服務(wù)端的消息顯示框內(nèi)。為了使消息的查詢功能方便執(zhí)行,和消息一同顯示的還有發(fā)送消息的時間。
4結(jié)語
事實上,在服務(wù)端界面上也可執(zhí)行相同操作。運行結(jié)果表明,本系統(tǒng)可以實現(xiàn)局域網(wǎng)內(nèi)即時消息的接收功能。
20211020_61702d0fd533b__基于Delphi的即時通訊系統(tǒng)的設(shè)計