基于局域網(wǎng)的信息收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
基于局域網(wǎng)的信息收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于局域網(wǎng)的信息收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 摘摘 要要 網(wǎng)絡(luò)通訊在當(dāng)今已經(jīng)不算新鮮事物,但大多數(shù)網(wǎng)絡(luò)通訊都需要借助 Internet 上的服務(wù)器,這就給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成了許多問題, 如浪費(fèi)網(wǎng)絡(luò)資源、遭遇到網(wǎng)絡(luò)攻擊、傳播的病毒、破壞防御系統(tǒng)等等。由于互 連網(wǎng)上的網(wǎng)絡(luò)通訊工具給企業(yè)內(nèi)部信息交流帶來了不便,所以為了方便內(nèi)部網(wǎng) 絡(luò)的用戶之間的溝通,需要開發(fā)一個(gè)基于局域網(wǎng)的信息收發(fā)系統(tǒng)的即時(shí)通訊工 具,實(shí)現(xiàn)在內(nèi)部網(wǎng)絡(luò)中進(jìn)行信息的交流。本課題設(shè)計(jì)主要針對(duì)局域網(wǎng)通訊而開 發(fā)設(shè)計(jì)的,采用的是 C/S 構(gòu)架,利用 Delphi 編程工具來實(shí)現(xiàn)單播、廣播以及在 線用戶顯示和查看歷史記錄的功能,并借助一些網(wǎng)絡(luò)通訊組件,成功的實(shí)現(xiàn)了 在局域網(wǎng)上的即時(shí)通訊。本論文共分為六部分。第一部分是課題的背景及研究 意義;第二部分是所運(yùn)用的理論基礎(chǔ)知識(shí);第三部分是本系統(tǒng)的需求分析;第 四部分是系統(tǒng)結(jié)構(gòu)和模塊設(shè)計(jì);第五部是實(shí)施和測試情況;最后是本設(shè)計(jì)的結(jié) 論總結(jié)及部分參考文獻(xiàn)。 關(guān)鍵詞關(guān)鍵詞:即時(shí)通訊;C/S 構(gòu)架;單播;廣播;歷史記錄 The Design and Implementation of Receiving and Sending Information System Based On LAN Abstract The network communication in already did not calculate the new things now, but the majority network communication all needed to draw support from on Internet the server, this gave these to have the large-scale internal network user to create many problems, like waste network resources, bitter experience to network attack, dissemination virus, destruction defense system and so on. Because on the interconnection network communication facilities the interior communication have brought inconveniently for the enterprise, therefore in order to facilitate internal network between users communication, needs to develop one based on the local area network information receiving and dispatching system instant message facilities, realizes carries on the information in the internal network the exchange. This topic design mainly aims at the local area network communication to develop the design, uses is the C/S structure, realizes the unicast, the broadcast as well as the online user demonstration and the examination historic record function using the Delphi programming tool, and drew support from some network communication module, the success realization on the local area network instant message. The present paper altogether divides into six parts. The first part is the topic background and the research significance; the second part is the rationale knowledge which utilizes; the third part is this system demand analysis; the fourth part is the system structure and the module design; fifth is the implementation and the test situation; finally is this design conclusion summary and the part reference. Key words: Instant message; C/S structure; Unicast; Broadcast; Historic record 目目 錄錄 論文總頁數(shù):25 頁 1引言1 1.1課題的背景1 1.2國內(nèi)外研究現(xiàn)狀1 1.3本課題研究的意義2 2理論基礎(chǔ)2 2.1C/S 軟件架構(gòu)技術(shù) 2 2.2用戶數(shù)據(jù)報(bào)協(xié)議(UDP).3 2.3單播(UNICAST)3 2.4廣播(BROADCAST) 4 3需求分析5 3.1現(xiàn)行業(yè)務(wù)系統(tǒng)描述5 3.2現(xiàn)行系統(tǒng)存在的主要問題分析5 3.3提出解決方案6 4系統(tǒng)設(shè)計(jì)6 4.1系統(tǒng)總體架構(gòu)6 4.2界面設(shè)計(jì)7 4.3系統(tǒng)功能模塊設(shè)計(jì)9 4.3.1網(wǎng)絡(luò)組件 .9 4.3.2用戶信息顯示功能 10 4.3.3局域網(wǎng)內(nèi)實(shí)現(xiàn)單播功能 14 4.3.4局域網(wǎng)內(nèi)實(shí)現(xiàn)廣播功能 17 4.3.5歷史信息記錄功能 17 5系統(tǒng)實(shí)施及測試.18 5.1實(shí)施概況.18 5.2測試方案.19 5.3測試結(jié)果.21 結(jié) 論.22 參考文獻(xiàn).22 致 謝.24 聲 明.25 第 1 頁 共 25 頁 1 1引言引言 1.11.1課題的背景課題的背景 隨著計(jì)算機(jī)網(wǎng)絡(luò)日新月異的發(fā)展,人們的交流方式越來越多,傳統(tǒng)的交流 方式,如:信件、電報(bào)、電話等已經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即 時(shí)的和好友取得聯(lián)系,已經(jīng)成為當(dāng)今社會(huì)人們主流的聯(lián)系方式。因此,計(jì)算機(jī) 之間進(jìn)行即時(shí)通訊、發(fā)送文件等交流方式已經(jīng)成為必然潮流。因此出現(xiàn)了 QQ、UC 等聊天工具,然而 QQ、UC 等聊天工具雖然方便、實(shí)用,但是,娛樂功 能太多,有很多吸引人的娛樂功能,從一定程度上來說,是一種娛樂工具,不 能作為用于即時(shí)通訊、文件共享的專用工具。目前,用于實(shí)現(xiàn)單一的即時(shí)通訊、 文件共享的軟件實(shí)在太少,而且它們中大部分都對(duì)遠(yuǎn)程服務(wù)器有非常大的依賴 性,沒有徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的交流。為此,我們決定開發(fā)一個(gè)專用于實(shí)現(xiàn)基于局 域網(wǎng)內(nèi)部計(jì)算機(jī)之間即時(shí)通訊、文件傳輸?shù)能浖?,以方便?nèi)網(wǎng)計(jì)算機(jī)之間信息 的交流。本軟件屬于點(diǎn)對(duì)點(diǎn)連接的,在連接并通信時(shí),尤其是近程的即時(shí)通訊, 徹底的脫離了遠(yuǎn)程的服務(wù)器,避免了和遠(yuǎn)程服務(wù)器連接時(shí)過多的浪費(fèi)網(wǎng)絡(luò)資源。 并且避免了服務(wù)器忙或與服務(wù)器無法連接時(shí),浪費(fèi)過多時(shí)間用于和服務(wù)器建立 連接。因此,這個(gè)軟件是極具適應(yīng)性和實(shí)用性的即時(shí)通訊軟件。 1.21.2國內(nèi)外研究現(xiàn)狀國內(nèi)外研究現(xiàn)狀 即時(shí)通訊的出現(xiàn)和互聯(lián)網(wǎng)有著密不可分的關(guān)系,從技術(shù)上來說,IM 完全基 于 TCP/IP 網(wǎng)絡(luò)協(xié)議族實(shí)現(xiàn),而 TCP/IP 協(xié)議族是整個(gè)互聯(lián)網(wǎng)得以實(shí)現(xiàn)的技術(shù)基 礎(chǔ),最早期的即時(shí)通訊雛形可以追溯到芬蘭人 Jarkko Oikarinen 于 1988 年發(fā) 明的一種網(wǎng)絡(luò)聊天協(xié)議 IRC(Internet Relay Chat) ,該協(xié)議僅支持文本聊天, 并且也不支持好友列表的概念,1996 年第一個(gè) IM 產(chǎn)品 ICQ 發(fā)明后,即時(shí)通訊 的技術(shù)和功能開始基本成型,其工作原理開始被人們所了解,但不同廠商實(shí)現(xiàn) 即時(shí)通訊技術(shù)原理時(shí)采用的協(xié)議卻有較大的差異,甚至到目前為止世界主要的 IM 服務(wù)運(yùn)營商 AOL(American Online:美國在線)仍然沒有公布其主要即時(shí)通訊 產(chǎn)品 AIM(American Instant Messenger)的專用協(xié)議。從 1997 年第一代即時(shí) 通訊軟件誕生后發(fā)展到現(xiàn)在,即時(shí)通訊行業(yè)先后經(jīng)歷了文本通信(第一代) 、語 音交流(第二代) 、視頻交流(第三代)和跨網(wǎng)溝通(第四代)等多種信息傳遞 技術(shù)變革。盡管第一代、第二代以及第三代即時(shí)通訊軟件的信息傳遞主要在互 聯(lián)網(wǎng)范圍內(nèi),但各個(gè)階段都可以看到即時(shí)通訊行業(yè)在跨網(wǎng)通訊領(lǐng)域中的應(yīng)用, 在移動(dòng)即時(shí)信息進(jìn)一步深化應(yīng)用,跨網(wǎng)語音交流進(jìn)一步加強(qiáng),跨網(wǎng)通訊領(lǐng)域的 進(jìn)一步拓寬,都意味著真正意義的跨網(wǎng)即時(shí)通訊已發(fā)展成型??梢哉f跨網(wǎng)即時(shí) 通訊應(yīng)用的萌芽、雛形以及誕生,都貫穿著整個(gè)行業(yè)的發(fā)展。而在過去的幾年, 第 2 頁 共 25 頁 行業(yè)的主導(dǎo)服務(wù)商騰訊在香港成功上市,并在當(dāng)年取得 55%的收入增長的佳績。 新浪斥資近兩億元收購 UC 即時(shí)通訊技術(shù)平臺(tái),微軟的 MSN 加大了中國市場的攻 勢,TOM-SKYPE 高調(diào)推出。即時(shí)通信行業(yè)出現(xiàn)了連續(xù)多年高速的增長。 1.31.3本課題研究的意義本課題研究的意義 隨著現(xiàn)代通訊技術(shù)不斷的發(fā)展,即時(shí)通訊技術(shù)也有飛速的發(fā)展,它是一種 使人們能在網(wǎng)上識(shí)別在線用戶并與他們實(shí)時(shí)交換消息的技術(shù),被很多人稱為電 子郵件發(fā)明以來最酷的在線通訊方式。但是為了提高通訊的質(zhì)量,很多企業(yè)在 網(wǎng)絡(luò)上進(jìn)行即時(shí)通訊時(shí)一般都不會(huì)采用 Internet 上的即時(shí)通訊軟件,如 QQ、MSN、OICQ 等。因此本課題主要是研究基于局域網(wǎng)的信息收發(fā)系統(tǒng)的設(shè)計(jì) 與實(shí)現(xiàn),希望能通開發(fā)設(shè)計(jì)的局域網(wǎng)通訊軟件來方便在內(nèi)部網(wǎng)絡(luò)上的信息交流, 這樣不緊提高了通訊的質(zhì)量,還能有效的防護(hù)在互連網(wǎng)上帶來的攻擊,對(duì)于那 些大中型企業(yè)來說更是需要這樣的一個(gè)自己內(nèi)部的即時(shí)通訊工具,避免帶來工 作效率上不去;病毒及木馬的感染率增大;遠(yuǎn)程服務(wù)器連接時(shí)過多的浪費(fèi)網(wǎng)絡(luò) 資源;互連網(wǎng)由于某種原因而斷開時(shí)造成通訊中斷等問題。 2 2理論基礎(chǔ)理論基礎(chǔ) 2.12.1C/SC/S 軟件架構(gòu)技術(shù)軟件架構(gòu)技術(shù) C/S(Client/Server)結(jié)構(gòu),即大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟 件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配 到 Client 端和 Server 端來實(shí)現(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)用都可以進(jìn)行同樣的業(yè)務(wù)處 理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新 的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。 這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。 傳統(tǒng)的 C/S 體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級(jí)的開 放性,在特定的應(yīng)用中無論是 Client 端還是 Server 端都還需要特定的軟件支 持。由于沒能提供用戶真正期望的開放環(huán)境,C/S 結(jié)構(gòu)的軟件需要針對(duì)不同的 操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適 應(yīng)百臺(tái)電腦以上局域網(wǎng)用戶同時(shí)使用。 第 3 頁 共 25 頁 圖 1 客戶機(jī)/服務(wù)器計(jì)算結(jié)構(gòu) 2.22.2用戶數(shù)據(jù)報(bào)協(xié)議(用戶數(shù)據(jù)報(bào)協(xié)議(UDPUDP) 用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是 ISO 參考模型中一種無連接的傳輸層協(xié)議,提供 面向事務(wù)的簡單不可靠信息傳送服務(wù)。UDP 協(xié)議基本上是 IP 協(xié)議與上層協(xié)議的 接口。UDP 協(xié)議適用端口分辨運(yùn)行在同一臺(tái)設(shè)備上的多個(gè)應(yīng)用程序。 由于大多數(shù)網(wǎng)絡(luò)應(yīng)用程序都在同一臺(tái)機(jī)器上運(yùn)行,計(jì)算機(jī)上必須能夠確保 目的地機(jī)器上的軟件程序能從源地址機(jī)器處獲得數(shù)據(jù)包,以及源計(jì)算機(jī)能收到 正確的回復(fù)。這是通過使用 UDP 的“端口號(hào)”完成的。源端口號(hào)標(biāo)識(shí)了請(qǐng)求域 名服務(wù)的本地機(jī)的應(yīng)用程序,同時(shí)需要將所有由目的站生成的響應(yīng)包都指定到 源主機(jī)的這個(gè)端口上。與 TCP 不同,UDP 并不提供對(duì) IP 協(xié)議的可靠機(jī)制、流控 制以及錯(cuò)誤恢復(fù)功能等。由于 UDP 比較簡單,UDP 頭包含很少的字節(jié),比 TCP 負(fù)載消耗少,所以 UDP 適用于不需要 TCP 可靠機(jī)制的情形,比如,當(dāng)高層協(xié)議 或應(yīng)用程序提供錯(cuò)誤和流控制功能的時(shí)候。UDP 是傳輸層協(xié)議,服務(wù)于很多知 名應(yīng)用層協(xié)議,包括網(wǎng)絡(luò)文件系統(tǒng)(NFS) 、簡單網(wǎng)絡(luò)管理協(xié)議(SNMP) 、域名系 統(tǒng)(DNS)以及簡單文件傳輸系統(tǒng)(TFTP) 。 2.32.3單播(單播(UnicastUnicast) 單播(Unicast)指網(wǎng)絡(luò)中從源向目的地轉(zhuǎn)發(fā)單播流量的過程。單播流量地 址唯一。單播方式下,只有一個(gè)發(fā)送方和一個(gè)接收方。與之比較,組播是指單 個(gè)發(fā)送方對(duì)應(yīng)一組選定接收方的一種通信,任意播是指任意發(fā)送方對(duì)應(yīng)一組較 為接近的接收方間的一種通信。早期的點(diǎn)對(duì)點(diǎn)通信含義類似于單播。 單播傳輸是 LANs 傳輸中的主要使用方式。所有 LANs(如以太網(wǎng))和 IP 網(wǎng)絡(luò)都支持單播傳輸模式,并且大多數(shù)用戶都了解標(biāo)準(zhǔn)單播應(yīng)用程序,如: 第 4 頁 共 25 頁 http、smtp、ftp 和 telnet 都作為 TCP 傳輸協(xié)議。新版本的網(wǎng)際協(xié)議第 六版(IPv6)支持單播同時(shí)也支持任意播和組播類型。許多路由選擇協(xié)議如路 由選擇信息協(xié)議(RIP)和開放最短路徑優(yōu)先(OSPF) ,都支持高效 Internet 單播路由選擇過程。 而 IPv6 支持單播(Unicast) 、組播(Multicast)和任意播(Anycast) 三種類型。IPv6 中沒有關(guān)于廣播(Broadcast)的具體劃分,而是作為組播的 一個(gè)典型類型。 圖 2 單播物理結(jié)構(gòu)圖 2.42.4廣播(廣播(BroadcastBroadcast) 網(wǎng)絡(luò)廣播是指一個(gè)節(jié)點(diǎn)同時(shí)向相同域中的其它所有節(jié)點(diǎn)傳輸數(shù)據(jù)包的過程。 組播是一種特殊的廣播,其中一組請(qǐng)求收聽的選定用戶將收到廣播。廣播傳輸 通常在局域網(wǎng)(如以太網(wǎng))中進(jìn)行,但有時(shí)也發(fā)生在虛擬局域網(wǎng)(VLAN)中。 IPv6 支持單播(Unicast) 、組播(Multicast)以及任意播(Anycast)三種類 型,IPv6 中沒有關(guān)于廣播(Broadcast)的具體劃分,而是作為組播的一個(gè)典 型。 生成廣播信息的應(yīng)用程序包括地址解析協(xié)議(ARP) 。通過該協(xié)議,主機(jī)發(fā) 送一個(gè)地址解析查詢到局域網(wǎng)中的所有計(jì)算機(jī)上,以實(shí)現(xiàn)網(wǎng)絡(luò) IP 地址的分配。 有些路由選擇協(xié)議,如 RIP,主要用于支持網(wǎng)絡(luò)設(shè)備“Advertise”網(wǎng)絡(luò)服務(wù)。 網(wǎng)絡(luò)廣播中涉及以下重要概念: 廣播域(Broadcast Domain):這是一個(gè)限定區(qū)域,其中的所有設(shè)備都可 以共享信息。換句話說,與網(wǎng)絡(luò)相連,且負(fù)責(zé)接收廣播的所有設(shè)備都是同一廣 播域的一部分。在一個(gè)共享以太網(wǎng)中,工作站通過共享媒體將幀廣播到其它所 有節(jié)點(diǎn)。其它節(jié)點(diǎn)收聽廣播,只接收尋址到它們的幀。因此,共享以太網(wǎng)中的 第 5 頁 共 25 頁 所有節(jié)點(diǎn)都屬于同一廣播域。此外通過虛擬局域網(wǎng)技術(shù)可以創(chuàng)建一個(gè)虛擬廣播 域。 廣播地址(Broadcast Address):這是一個(gè)特殊地址,當(dāng)數(shù)據(jù)包可以尋址 到該地址時(shí),可以幫助所有設(shè)備打開和處理信息。例如,MAC 地址,格式為 1xFFFFFFFF 是一種廣播地址;IP 地址 255.255.255.255 是通用廣播地址。任 何設(shè)備都將打開尋址到廣播地址的信息,并將它們傳送到下一個(gè)工作站。 廣播風(fēng)暴(Broadcast Storm):當(dāng)主機(jī)系統(tǒng)響應(yīng)一個(gè)在網(wǎng)上不斷循環(huán)的廣 播數(shù)據(jù)包或者試圖響應(yīng)一個(gè)沒有應(yīng)答的系統(tǒng)時(shí)就會(huì)發(fā)生廣播風(fēng)暴。隨著網(wǎng)絡(luò)數(shù) 據(jù)包數(shù)量的增加,廣播風(fēng)暴可能會(huì)引起網(wǎng)絡(luò)擁塞問題。為防止廣播風(fēng)暴的發(fā)生, 需要細(xì)心配置網(wǎng)絡(luò)以阻止非法廣播信息的進(jìn)入。 圖 3 廣播物理結(jié)構(gòu)圖 3 3需求分析需求分析 3.13.1現(xiàn)行業(yè)務(wù)系統(tǒng)描述現(xiàn)行業(yè)務(wù)系統(tǒng)描述 隨著計(jì)算機(jī)網(wǎng)絡(luò)日新月異的發(fā)展,人們的交流方式越來越多,傳統(tǒng)的交流 方式如:信件、電報(bào)、電話等已經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即時(shí) 的和好友取得聯(lián)系,已經(jīng)成為當(dāng)今社會(huì)人們主流的聯(lián)系方式。兩臺(tái)計(jì)算機(jī)之間 進(jìn)行即時(shí)通訊、發(fā)送文件等交流方式已經(jīng)成為時(shí)代的潮流。因此出現(xiàn)了 QQ、UC 等即時(shí)通訊工具。這些即時(shí)通訊業(yè)務(wù)屬于基礎(chǔ)語音業(yè)務(wù)外的數(shù)據(jù)增值類業(yè)務(wù), 從范疇來講屬于“消息類”業(yè)務(wù),本質(zhì)是完成對(duì)“文字、聲音、圖像”信息的 傳遞。同屬于消息類的業(yè)務(wù)還有短信、彩信等,他們之間都存在一定程度的替 代性,同時(shí)又各有長短。但不會(huì)成為那些大中型企業(yè)內(nèi)部的主要通訊工具,在 企業(yè)中要求很簡單,能確??焖僬5募磿r(shí)通訊,還要具有很好的安全性,這 樣才能提高工作效率,增加企業(yè)的效益。 第 6 頁 共 25 頁 3.23.2現(xiàn)行系統(tǒng)存在的主要問題分析現(xiàn)行系統(tǒng)存在的主要問題分析 目前,像 QQ、UC 等即時(shí)通訊工具雖然方便、實(shí)用,但是,娛樂功能太多, 有很多吸引人的娛樂功能,從一定程度上來說,是一種娛樂工具,不能作為用 于作為即時(shí)通訊、文件共享的專用工具。并且現(xiàn)在用于實(shí)現(xiàn)單一的即時(shí)通訊、 文件共享的軟件真的實(shí)在太少,因此不能為那些大中型企業(yè)所使用,而且在現(xiàn) 行的系統(tǒng)中主要的問題是:一、在即時(shí)通訊系統(tǒng)中由于防火墻、網(wǎng)絡(luò)速度等原 因難以建立或者速度很慢,IM 服務(wù)器還提供消息中轉(zhuǎn)服務(wù),即時(shí)消息全部先發(fā) 送到 IM 服務(wù)器,還要再由服務(wù)器轉(zhuǎn)發(fā)給對(duì)方,所以連接時(shí)過多的浪費(fèi)了網(wǎng)絡(luò)資 源,并且在服務(wù)器忙或與服務(wù)器無法連接時(shí),浪費(fèi)過多時(shí)間用于和服務(wù)器建立 連接;二、即時(shí)通訊工具始終是通過互連網(wǎng)的服務(wù)器來傳輸?shù)模沁@樣所以 更有可能會(huì)帶來遭遇到網(wǎng)絡(luò)上的許多攻擊,如木馬,蠕蟲等。為企業(yè)中的信息 交流帶來了很大的安全性問題。 3.33.3提出解決方案提出解決方案 根據(jù)企業(yè)在內(nèi)部網(wǎng)絡(luò)上信息交流的需求,所以本課題就主要針對(duì)內(nèi)部的網(wǎng) 絡(luò)來設(shè)計(jì)這樣的一個(gè)即時(shí)通訊系統(tǒng),本系統(tǒng)是在基于局域網(wǎng)的在 IM 客戶端和 IM 服務(wù)器之間通訊采用的 UDP 協(xié)議和 C/S 軟件構(gòu)架技術(shù)上開發(fā)的通訊工具,它 在近程的即時(shí)通訊時(shí)徹底的脫離了遠(yuǎn)程的服務(wù)器,不通過遠(yuǎn)程服務(wù)器來完成實(shí) 現(xiàn)通訊,避免了和遠(yuǎn)程服務(wù)器連接時(shí)過多的浪費(fèi)網(wǎng)絡(luò)資源。并且避免了服務(wù)器 忙或與服務(wù)器無法連接時(shí)浪費(fèi)過多時(shí)間用于和服務(wù)器建立連接,同時(shí)也為內(nèi)網(wǎng) 服務(wù)增強(qiáng)了許多的安全性,徹底的將通訊工具從互連網(wǎng)上搬到內(nèi)網(wǎng)中來,這樣 一來就不會(huì)受到來自互連網(wǎng)的攻擊了。這種系統(tǒng)主要是為了方便了大中型企業(yè) 在內(nèi)部即時(shí)通訊要求,從而進(jìn)一步提高工作效率,增加企業(yè)的效益。 4 4系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) 4.14.1系統(tǒng)總體架構(gòu)系統(tǒng)總體架構(gòu) 本系統(tǒng)主要是采用 C/S 結(jié)構(gòu),并且每個(gè)客戶端也是作為服務(wù)器端的,當(dāng)系 統(tǒng)發(fā)送信息給局域網(wǎng)的用戶,主要由單播模塊和廣播模塊來實(shí)現(xiàn),而其中的單 播模塊和用戶信息模塊是具有依賴性的,在接收信息的時(shí)候又有兩個(gè)模塊來完 成,一是信息接收的模塊,另一個(gè)是信息查看的模塊。 由此可以看出本系統(tǒng)主要分為兩大部分模塊:發(fā)送模塊和接收模塊。發(fā)送 模塊:單播模塊,廣播模塊,用戶信息模塊,信息記錄模塊接收模塊:接收信 息模塊,查看信息模塊 有了以上的了解了那讓我們來看看系統(tǒng)的架構(gòu)圖: 第 7 頁 共 25 頁 圖 4 系統(tǒng)架構(gòu)圖 4.24.2界面設(shè)計(jì)界面設(shè)計(jì) 為了方便用戶的操作,我采用比較簡單的界面設(shè)計(jì),主界面包括廣播按鈕、 發(fā)送按鈕、刷新按鈕、在線用戶顯示框、信息輸入窗體。其中廣播按鈕是將信 息窗體中的內(nèi)容發(fā)送到所有的用戶;發(fā)送按鈕是將信息窗體中的內(nèi)容發(fā)送到指 定的用戶;在線用戶顯示框中選取指定的用戶和查看用戶的信息;刷新是重載 用戶列表。 系統(tǒng)主界面 (服務(wù)器/客戶) 單 播 發(fā) 送 廣 播 發(fā) 送 接 收 信 息 顯示用戶信息 信 息 寫 入 查看歷史記錄 工 作 組 IP 地 址 用 戶 名 第 8 頁 共 25 頁 圖 5 主界面 當(dāng)有信息傳過來時(shí)將自動(dòng)彈出一個(gè)信息接收的窗體,窗體包括查看按鈕和 關(guān)閉按鈕還有一個(gè)顯示對(duì)方用戶的區(qū)域,他們分別是用來打開并查看信息或是 不想查看而關(guān)閉的作用。 圖 6 信息接收界面 如過你在圖 6 中點(diǎn)擊了查看按鈕,那么將會(huì)彈到顯示信息查看的窗體上, 在文本區(qū)則會(huì)顯示對(duì)方傳送過來的信息內(nèi)容,在查看了之后有個(gè)關(guān)閉按鈕,用 來結(jié)束對(duì)話框,便可以回到圖 5 的界面了。 第 9 頁 共 25 頁 圖 7 信息查看界面 在歷史記錄的窗體中點(diǎn)擊記錄文件按鈕來選擇保存的路徑,將會(huì)自動(dòng)生成 一個(gè)文本文件來對(duì)通訊記錄進(jìn)行保存。 圖 8 歷史記錄 4.34.3系統(tǒng)功能模塊設(shè)計(jì)系統(tǒng)功能模塊設(shè)計(jì) 4.3.14.3.1 網(wǎng)絡(luò)組件網(wǎng)絡(luò)組件 UDP 協(xié)議由 TCP 協(xié)議衍生而來。TCP 用于確保點(diǎn)對(duì)點(diǎn)的連接,而 UDP 并不保 證發(fā)送的數(shù)據(jù)一定到達(dá),也不表明數(shù)據(jù)報(bào)的傳輸成功或失敗。 本系統(tǒng)設(shè)計(jì)使用的是 TIdUDPClient 和 TIdUDPServer 兩個(gè)用戶數(shù)據(jù)報(bào) (UDP)組件,首先創(chuàng)建 Delphi 工程。然后向工程組再添加一個(gè)工程。把一個(gè) 工程作為客戶,另一個(gè)作為服務(wù)器。為連接到 UDP 服務(wù)器,需要一個(gè) TIdUDPClient 組件。用來表示服務(wù)器的 IP 地址和端口號(hào)。由于 UDP 是無連接 的,因此在 UDP 的接口方法中不包括 Connect 方法。要使用 Internet Direct 實(shí)現(xiàn)的組件,只需使用 Send 向給定的 IP 地址和端口號(hào)廣播一個(gè)命令字符串。 其中我為 IP 地址和端口號(hào)的設(shè)置分別為 127.0.0.1 和 9000。服務(wù)器是作 為應(yīng)用程序?qū)崿F(xiàn)的,它對(duì)客戶程序發(fā)出的一個(gè)簡單的命令集進(jìn)行響應(yīng)。為實(shí)現(xiàn) 第 10 頁 共 25 頁 服務(wù)器,程序?qū)⒈O(jiān)聽 DefaultPort 端口上的廣播,并將 TIdUDPServer.Active 設(shè)置為 True。 下面是我對(duì) TIdUDPClient 和 TIdUDPServer 組件的設(shè)置圖: 圖 9 TIdUDPClient 組件設(shè)置 圖 10 TIdUDPServer 組件設(shè)置 4.3.24.3.2 用戶信息顯示功能用戶信息顯示功能 為了方便用戶選取單個(gè)用戶進(jìn)行信息發(fā)送和查看在線用戶的信息,所以設(shè) 計(jì)了一個(gè) ListView 來進(jìn)行顯示如圖 5,在 ListView 中包括了用戶名、工作組、 IP 地址。當(dāng)有用戶打開本系統(tǒng)的時(shí)候?qū)?huì)向局域網(wǎng)中的所有用戶發(fā)送一個(gè)握手 信息來獲取網(wǎng)絡(luò)中的在線用戶信息并添加到列表中顯示出來,同時(shí)也把自己的 網(wǎng)絡(luò)資源信息發(fā)送給對(duì)方,使自己被添加到其他用戶的列表中。 其中分別要對(duì)網(wǎng)絡(luò)中的所有的用戶名、工作組、IP 地址進(jìn)行獲取,下面來 看一下對(duì)于獲取這些網(wǎng)絡(luò)資源的代碼部分。 1) 用戶名獲取代碼如下: Function tform1.GetUsers( GroupName : string;List : TStringList) : Boolean; type TNetResourceArray = TNetResource; /網(wǎng)絡(luò)類型的數(shù)組 Var NetResource: TNetResource; Buf: Pointer; Count,BufSize,Res: DWord; lphEnum: THandle; Ind: Integer; Temp: TNetResourceArray; TmpStr:String; 第 11 頁 共 25 頁 Begin Result := False; FillChar(NetResource, SizeOf(NetResource), 0); /初始化網(wǎng)絡(luò)層次信息 NetResource.lpRemoteName := GroupName1; /指定工作組名稱 NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;/類型為服務(wù)器(工作組) NetResource.dwUsage := RESOURCEUSAGE_CONTAINER; /已連接機(jī)器 NetResource.dwScope := RESOURCETYPE_DISK; /列舉文件資源信息 /獲取指定工作組的網(wǎng)絡(luò)資源句柄 Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, NetResource,lphEnum); If Res NO_ERROR) then Exit; /執(zhí)行失敗 Temp := TNetResourceArray(Buf); For Ind := 0 to Count - 1 do /列舉工作組的計(jì)算機(jī)名稱 Begin /獲取工作組的計(jì)算機(jī)名稱 tmpStr:=Temp.lpRemoteName; Delete(tmpstr,1,2); Form1.ListBox1.Items.Add(tmpStr); list.Add(tmpstr); Inc(Temp); end; end; Res := WNetCloseEnum(lphEnum);/關(guān)閉一次列舉 If Res NO_ERROR then break;/執(zhí)行失敗 while true do/列舉一個(gè)網(wǎng)絡(luò)類型的所有工作組的信息 begin Count := $FFFFFFFF; /不限資源數(shù)目 BufSize := 8192; /緩沖區(qū)大小設(shè)置為 8K GetMem(Buf, BufSize); /申請(qǐng)內(nèi)存,用于獲取工作組信息 /獲取一個(gè)網(wǎng)絡(luò)類型的文件資源信息 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize); if ( Res = ERROR_NO_MORE_ITEMS ) /資源列舉完畢 or (Res NO_ERROR then break; /執(zhí)行失敗 end; Result := True; FreeMem(Buf); NetworkTypeList.Destroy; end; 第 13 頁 共 25 頁 3) IP 地址獲取代碼如下: procedure TForm1.ServerUDPRead(Sender: TObject; AData: TStream;ABinding: TIdSocketHandle); var readbuf:array02030of char; msg,head,recvip,recvname,recvworkgroup,recvmsg,memo:string; recvport:integer; f:textfile; begin ZeroMemory(readbuf0,2030); adata.Read(readbuf,sizeof(readbuf); msg:=Trim(String(Pchar(Readbuf0); /memo1.Lines.Add(msg); head:=trim(copy(msg,1,headlen); /添加對(duì)方 IP 1.返回對(duì)方 IP 2. 發(fā)出 Hand 握手信息 if head=LOGIN then begin recvip:=abinding.PeerIP; recvport:=9000; / memo1.Lines.Add(login recv+recvip+inttostr(recvport); recvname:=copy(msg,headlen+1,namelen); recvworkgroup:=copy(msg,headlen+namelen+1,length(msg); adduser(recvname,recvworkgroup,recvip,recvport); handdata(recvip,myname,myworkgroup,recvport); end; /添加對(duì)方返回的自己的 ip (對(duì)比) if head=REVLOGthen begin / memo1.Lines.Add(revlog recv); RECVPORT:=strtoint(copy(msg,headlen+1,portlen); recvip:=copy(msg,headlen+portlen+1,iplen); recvlog(recvip,recvport); end; 第 14 頁 共 25 頁 4.3.34.3.3 局域網(wǎng)內(nèi)實(shí)現(xiàn)單播功能局域網(wǎng)內(nèi)實(shí)現(xiàn)單播功能 在本設(shè)計(jì)中單播發(fā)送的按鈕為 BitBtn2,主要是通過 IdUDPServer 和 IdUDPClient 組件來編寫的,由 client.SendBuffer 語句來發(fā)送的,主要是對(duì) 局域網(wǎng)內(nèi)部的同一工作組用戶發(fā)送信息。 下面是發(fā)送按鈕的代碼部分: procedure TForm1.BitBtn2Click(Sender: TObject); var /myinfobuf:array01023of char; _ToPORT:integer; chatinfo,_ToIP,savelog:string; chatinfobuf:array02030of char; tempItem:TListItem; f:textfile; /處理握手信息 添加對(duì)方 ip 返回對(duì)方 ip if head=HANDthen Begin / memo1.Lines.Add(hand recv); RECVNAME:=COPY(msg,headlen+1,namelen); recvworkgroup:=copy(msg,headlen+namelen+1,workglen); recvip:=abinding.PeerIP; recvport:=9000; recvp2pdata(recvip,recvname,recvworkgroup,recvport); end; /處理握手信息 添加對(duì)方 ip 返回對(duì)方 ip if head=HANDthen Begin / memo1.Lines.Add(hand recv); RECVNAME:=COPY(msg,headlen+1,namelen); recvworkgroup:=copy(msg,headlen+namelen+1,workglen); recvip:=abinding.PeerIP; recvport:=9000; recvp2pdata(recvip,recvname,recvworkgroup,recvport); end; 第 15 頁 共 25 頁 由于是單播所以需要指定用戶,而用戶是由 ListView 中顯示的,則要對(duì)其 進(jìn)行顯示并能選取,通過客服端來讓主機(jī)服務(wù)器響應(yīng),實(shí)現(xiàn)代碼主要如下: Function tform1.recvp2pdata(recvip,recvname,recvworkgroup:string;recvport:integer):string; var minfobuf:array01023of char; minfo:string; tempitem:tlistitem; i,j:integer; begin j:=0; for i:=0 to userlist.Items.Count-1 do begin if userlist.Items.Itemi.Captionmyname then inc(j,1); if j=userlist.Items.Count then 第 17 頁 共 25 頁 IP 地址進(jìn)行顯示;由工作組進(jìn)行顯示,最后連接到表 Label2 中去。 4.3.44.3.4 局域網(wǎng)內(nèi)實(shí)現(xiàn)廣播功能局域網(wǎng)內(nèi)實(shí)現(xiàn)廣播功能 在本設(shè)計(jì)中單播發(fā)送的按鈕為 BitBtn3,主要是通過 IdUDPServer 和 IdUDPClient 組件來編寫的,主要是使用了 client.Broadcast 來對(duì)信息進(jìn)行發(fā) 送的,在發(fā)送時(shí)將會(huì)把信息發(fā)送給在局域網(wǎng)內(nèi)部的所有用戶包括自己。 下面是發(fā)送按鈕的代碼部分: 4.3.54.3.5 歷史信息記錄功能歷史信息記錄功能 為了能讓用戶對(duì)歷史的信息進(jìn)行查看,所以本設(shè)計(jì)中包含了一個(gè)對(duì)歷史信 procedure TForm1.BitBtn3Click(Sender: TObject); var chatinfo:string; chatinfobuf:array02030of char; f:textfile; begin chatinfo:=format(%-6s%-255s%-1024s,CHAT,myname,memo1.Lines.Text); strpcopy(chatinfobuf,chatinfo); client.Broadcast(chatinfobuf,9000); end; begin tempItem:=UserList.Items.Add ; tempItem.Caption:=myname; if form5.checkbox1.Checked then tempItem.SubItems.Add(myworkgroup); if form5.CheckBox3.Checked then tempItem.SubItems.Add(myname); if form5.CheckBox4.Checked then tempItem.SubItems.Add(recvip); end else exit; end; Label2.Caption:=INTTOSTR(USERLIST.Items.Count); end; 第 18 頁 共 25 頁 息進(jìn)行記錄的功能,主要是創(chuàng)建一個(gè)記事本文件對(duì)信息進(jìn)行復(fù)制保存,以下就 是歷史信息記錄的代碼: 5 5系統(tǒng)實(shí)施及測試系統(tǒng)實(shí)施及測試 5.15.1實(shí)施概況實(shí)施概況 本設(shè)計(jì)是基于局域網(wǎng)內(nèi)采用 C/S 結(jié)構(gòu)的即時(shí)通信軟件,其主要實(shí)現(xiàn)的是單 procedure Tdetailform.RecorBBtnClick(Sender: TObject); begin if SavRecorDia.Execute then begin RecorEd.Text:=SavRecorDia.FileName; end; end; procedure Tdetailform.Button3Click(Sender: TObject); var F:textfile; begin showmessage(RecorEd.Text); assignfile(f,RecorEd.Text); rewrite(F); closefile(F); end; begin if detailform.RecorEd.Text then begin Assignfile(f,detailform.RecorEd.Text); if fileexists(detailform.RecorEd.Text)then append(f) else rewrite(F); writeln(f,=); writeln(f,發(fā)往:+_ToIp); if SealCheckBox.Checked then writeln(f,時(shí)間:+datetostr(now)+timetostr(now) else writeln(f,時(shí)間:+datetostr(now)+timetostr(now); writeln(f,-); writeln(f,SRMemo.Lines.Text); writeln(f,=); closefile(f); end; end; 第 19 頁 共 25 頁 播和廣播功能,還包含了顯示用戶信息、查看歷史信息等輔助功能。本設(shè)計(jì)是 在是 Microsoft Windows XP 系統(tǒng)上利用編程軟件開發(fā)的,然后再組建的局域網(wǎng) 中來進(jìn)行測試和調(diào)試工作,所以最少會(huì)用到兩臺(tái)或兩臺(tái)以上的電腦并由交換機(jī) 組成一個(gè)小型的局域網(wǎng),考慮到一些系統(tǒng)兼容性的問題,所以在內(nèi)部網(wǎng)絡(luò)上的 每臺(tái)計(jì)算機(jī)上都用的是相同的操作系統(tǒng),在網(wǎng)絡(luò)配置方面也是相同的方式。對(duì) 于編程軟件的選擇主要是采用 Delphi7 來編寫和編譯程序的,因?yàn)榭紤]到 Delphi 是具有可視化的一個(gè)編程環(huán)境, Delphi 它提供了 500 多個(gè)可供使用的 構(gòu)件,利用這些部件可以快速地構(gòu)造出應(yīng)用系統(tǒng)。也可以根據(jù)自己的需要修改 部件或用 Delphi 本身編寫自己的部件,能提供方便、快捷的 Windows 應(yīng)用程序 開發(fā)環(huán)境,本程序也基本是借助與那些組件來編寫的。 5.25.2測試方案測試方案 本程序在 Windows XP 操作系統(tǒng)下,使用 Borland Delphi 7 企業(yè)版軟件作 為開發(fā)工具,利用 Delphi7(企業(yè)版)集成開發(fā)環(huán)境中提供的網(wǎng)絡(luò)通訊組件進(jìn) 行編程的,代碼也是在這個(gè)開發(fā)環(huán)境中編譯的,并在組建的局域網(wǎng)中進(jìn)行系統(tǒng) 測試的。 設(shè)計(jì)測試的是同在一個(gè)局域網(wǎng)中,先將編譯好的程序復(fù)制到內(nèi)部網(wǎng)絡(luò)上的 沒臺(tái)計(jì)算機(jī)上面,然后都將設(shè)計(jì)的系統(tǒng)打開運(yùn)行,這是觀察是否能顯示所有的 在線用戶的信息,如果了防火墻之類的軟件正在運(yùn)行的話,很可能不能正常顯 示工作組、IP 等信息,所以最好是關(guān)閉防火墻。如圖 11: 第 20 頁 共 25 頁 圖 11 顯示在線用戶 如果能顯示出來用戶的信息則在其中一臺(tái)計(jì)算機(jī)上的信息窗體中輸入好準(zhǔn) 備發(fā)送出去的信息“歡迎使用!” ,如圖 12: 圖 12 輸入發(fā)送信息 如果是想發(fā)送到整的網(wǎng)絡(luò)就點(diǎn)擊界面上的廣播按鈕,這時(shí)在所有的計(jì)算機(jī) 上都會(huì)彈出一個(gè)接收的界面,如圖 13: 圖 13 接收界面 點(diǎn)擊查看按鈕則會(huì)彈到一個(gè)查看信息的界面上,上面會(huì)顯示出剛才所發(fā)送 的信息和來自于誰,如圖 14: 第 21 頁 共 25 頁 圖 14 查看界面 如果是想發(fā)送給網(wǎng)絡(luò)中的其中一個(gè)用戶就先選擇要發(fā)送的對(duì)象再點(diǎn)擊發(fā)送 按鈕,這時(shí)就只會(huì)在那個(gè)指定的用戶那里彈出查看的界面了而其他用戶則不會(huì) 接收到發(fā)送來的信息。 要是想對(duì)通訊的內(nèi)容進(jìn)行記錄,則在歷史記錄窗體上選擇保存通訊記錄的 路徑,點(diǎn)擊確認(rèn)按鈕,便會(huì)在選擇的路徑里生成一個(gè)文本文件用來保存用戶的 通訊記錄了,在點(diǎn)擊托盤區(qū)圖標(biāo)選擇查看記錄,如圖 15: 圖 15 通訊記錄界面 第 22 頁 共 25 頁 最后是退出,退出只能點(diǎn)擊托盤區(qū)的圖標(biāo)來退出,當(dāng)關(guān)閉了其中一個(gè)用戶 的時(shí)候,其他的用戶列表中自動(dòng)會(huì)將該用戶的用戶信息給刪除,這表明此用戶 已經(jīng)下線離開了。 5.35.3測試結(jié)果測試結(jié)果 經(jīng)過多次在局域網(wǎng)中進(jìn)行測試,本設(shè)計(jì)的基本功能都在測試中得到了體現(xiàn), 下面就是我在整個(gè)測試的過程中得到的一些測試結(jié)果: 1. 在局域網(wǎng)內(nèi)能完整傳輸所發(fā)的信息,不會(huì)出現(xiàn)信息丟失或亂碼等情況 2. 在測試的時(shí)候如果開了防火墻很可能不能顯示工作組,但并不會(huì)影響 到信息的發(fā)送和接收 3. 在發(fā)送廣播信息時(shí)是對(duì)所有用戶發(fā)送信息,包括自己也會(huì)收到廣播信 息 4. 當(dāng)進(jìn)入系統(tǒng)后便能自動(dòng)更新顯示在線用戶信息,用戶下線時(shí)能在顯示 列表中也能自動(dòng)刪除此用戶信息 5. 能對(duì)用戶在即時(shí)的通訊時(shí)的通訊信息進(jìn)行記錄,方便用戶查看歷史的 通訊信息 6. 通過測試還發(fā)現(xiàn)了用戶只能進(jìn)行文本格式即時(shí)的通訊,不能發(fā)送圖片 等格式的信息 7. 在發(fā)送信息時(shí)沒有能對(duì)信息進(jìn)行加密后在發(fā)送 結(jié)結(jié) 論論 通過本次課題的研究,認(rèn)識(shí)到即時(shí)通訊工具在企業(yè)中起到了重要的作用, 本系統(tǒng)實(shí)現(xiàn)了顯示在線用戶信息的功能,能夠查看到當(dāng)前局域網(wǎng)中用戶的在線 情況,并且可以對(duì)用戶的用戶名、工作組和 IP 地址的信息進(jìn)行顯示;能保存歷 史記錄的功能,可以方便用戶對(duì)歷史信息進(jìn)行查看;還實(shí)現(xiàn)了在局域網(wǎng)內(nèi)部進(jìn) 行收發(fā)單播和廣播信息的功能。解決了傳統(tǒng)通訊工具需要連接遠(yuǎn)程服務(wù)器來進(jìn) 行信息轉(zhuǎn)發(fā)的局限性問題,這樣能夠節(jié)約網(wǎng)絡(luò)資源,也保證了在信息交流時(shí)的 安全性,減少了病毒及木馬的感染率。但是系統(tǒng)還有是存在一些不足的地方存 在:1、只是單一的傳輸文本信息,還不能對(duì)圖片格式等進(jìn)行傳輸 2、沒有針對(duì) 信息進(jìn)行加密發(fā)送,這樣不能保證所發(fā)送和接收的信息百分之百的安全;3、沒 有設(shè)計(jì)用戶登錄界面,使本系統(tǒng)的使用方面還存在安全問題。但是我會(huì)在以后 的工作學(xué)習(xí)中逐步解決這些問題,不斷完善這個(gè)系統(tǒng),使它更具實(shí)用性的。 本次課題設(shè)計(jì)我學(xué)到了很多關(guān)于網(wǎng)絡(luò)通訊方面的知識(shí),也認(rèn)識(shí)到自己的能 力,是我從理論走向?qū)嵺`邁出的堅(jiān)實(shí)的一步。從設(shè)計(jì)分析到設(shè)計(jì)編寫直到具體 實(shí)現(xiàn),在學(xué)校所學(xué)的理論知識(shí)對(duì)我有很大的幫助,我也發(fā)現(xiàn)了我的很多不足的 第 23 頁 共 25 頁 地方??傊ㄟ^這次畢業(yè)設(shè)計(jì),我深深體會(huì)到,一個(gè)好的程序設(shè)計(jì)人員必須具 有認(rèn)真、謹(jǐn)慎的作風(fēng),堅(jiān)忍不拔的毅力,并且要不斷的向更高的臺(tái)階邁進(jìn),我 會(huì)向著這個(gè)方向去努力。 參考文獻(xiàn)參考文獻(xiàn) 1 劉華.黑魔方 Delphi 基礎(chǔ)教程M.北京:清華大學(xué)出版社,2004.9。 2 飛思科技產(chǎn)品研發(fā)中心.Delphi 網(wǎng)絡(luò)高級(jí)編程M.北京:電子工業(yè)出版社,2002.1。 3 施新剛.Delphi 實(shí)效編程百例M.北京:人民郵電出版社,2002.1。 4 鮑敏,吳昊.Delphi 網(wǎng)絡(luò)高級(jí)編程M.北京:人民郵電出版社,2001.7。 5 肖建.Delphi 6 編程基礎(chǔ)M.北京:清華大學(xué)出版社,2002.1。 6 (美)W.Richars Stevens.TCP/IP 詳解 卷 1:協(xié)議M. 北京:機(jī)械工業(yè)出版社,2005。 7 (美)Paul Kimmel.Delphi 6 應(yīng)用開發(fā)指南M.北京:清華大學(xué)出版社,2002.1。 第 24 頁 共 25 頁 致致 謝謝 本文是在趙軍老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識(shí)和嚴(yán)謹(jǐn)?shù)闹?學(xué)作風(fēng)使我受益匪淺,對(duì)順利完成本課題起到了極大的作用。在此向他表示我 最衷心的感謝! 在論文完成過程中,本人還得到了其他老師和許多同學(xué)的熱心幫助,本人 向他們表示深深的謝意! 最后向在百忙之中評(píng)審本文的各位專家、老師表示衷心的感謝! 第 25 頁 共 25 頁 聲聲 明明