畢業(yè)設(shè)計(jì)(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
《畢業(yè)設(shè)計(jì)(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計(jì)(論文)基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(18頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 摘 要 隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,計(jì)算機(jī)通信給人類文明帶來了翻天覆地的變 化。很多情況下,人們的日常工作需要借助文件傳輸來完成。但大多數(shù)文件傳 輸功能都需要借助移動(dòng)磁盤等硬件設(shè)備或 Internet 上的服務(wù)器才能實(shí)現(xiàn)。這就 給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成了許多問題,如浪費(fèi)資金、浪費(fèi)網(wǎng)絡(luò)資 源、病毒入侵、降低了工作效率等。為了方便局域網(wǎng)內(nèi)主機(jī)的資源共享,需要 開發(fā)一個(gè)基于局域網(wǎng)的文件傳輸工具,在內(nèi)部網(wǎng)絡(luò)中實(shí)現(xiàn)文件交換。 基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)選用 Delphi 為開發(fā)工具,以 C/S 模式 通過建立 Socket 連接后實(shí)現(xiàn)局域網(wǎng)快速,準(zhǔn)確,安
2、全的點(diǎn)對(duì)點(diǎn)文件以及文件夾 傳輸功能。本系統(tǒng)能夠促進(jìn)局域網(wǎng)內(nèi)用戶之間的文件資源共享,滿足主機(jī)之間 信息交流,確保文件及文件夾傳輸安全性,有效地提高工作效率。 設(shè)計(jì)共分為五大模塊,分別為:一、介紹選題背景及意義和國內(nèi)外研究現(xiàn) 狀;二、介紹 TCP/IP 點(diǎn)對(duì)點(diǎn)協(xié)議技術(shù),C/S 架構(gòu)的 Delphi 程序設(shè)計(jì)技術(shù)和 Socket 網(wǎng)絡(luò)編程技術(shù);三、對(duì)當(dāng)前局域網(wǎng)文件傳輸進(jìn)行需求分析并提出解決方 案;四、根據(jù)解決方案對(duì)系統(tǒng)進(jìn)行設(shè)計(jì);五、對(duì)基于局域網(wǎng)的文件傳輸系統(tǒng)進(jìn) 行測(cè)試并得到測(cè)試結(jié)果。 關(guān)鍵詞:C/S 結(jié)構(gòu);網(wǎng)絡(luò)通訊組件;點(diǎn)對(duì)點(diǎn);Socket 連接 The Design and Implementat
3、ion of File Transfer System Based on LAN Abstract Along with the Internet technology swift and violent development, the computer correspondence the human culture has brought the earth-shaking change for. In very many situations, peoples routine work needs to draw support from the file transfer to co
4、mplete. But the majority file transfer function all needs to draw support moves hardware equipment or the Internet and so in the floppy disk server can realize This gave these to have the large-scale internal network user to create many problems, like the waste fund, the waste network resources, the
5、 viral invasion, reduced the working efficiency and so on. In order to facilitate in the local area network main engine resources sharing, needs to develop one based on the local area network file transfer tool, realizes the document exchange in internal network. The design and implementation of fil
6、e transfer system base on LAN uses Delphi development tool,C/S mode through the establishment of Socket after connecting LAN users fast, accurate, the point-to-point security files and folders transmission functions. The system can contribute to LAN users to share file resources to meet the exchange
7、 of information between mainframe, ensure that the filets and folders transmission security, effectively improving efficiency. The design is divided into five major module altogether, including: First, introduction selected topic background and significance and domestic and foreign research present
8、situation; Second, introduces the TCP/IP point to point protocol technology, C/S overhead construction Delphi programming technique and the Socket network programming technology; Third, carries on the demand to the current local area network file transfer to analyze and to propose the solution; Four
9、th, carries on the design according to the solution to the system; Fifth, to carries on based on the local area network file transfer system tests and obtains the test result. Key words: C/S structure; Network communication module; Point-to-point; Socket connection. 目 錄 論文總頁數(shù):26 頁 1 引言 .1 1.1 選題背景 .
10、1 1.2 國內(nèi)外研究現(xiàn)狀 .1 1.3 課題研究的意義 .1 2 理論基礎(chǔ) .2 2.1 TCP/IP 點(diǎn)對(duì)點(diǎn)協(xié)議技術(shù) .2 2.2 C/S 架構(gòu)的 DELPHI 程序設(shè)計(jì)技術(shù) .2 2.3 SOCKET 網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù) .3 3 系統(tǒng)需求分析 .4 3.1 現(xiàn)行業(yè)務(wù)系統(tǒng)描述 .4 3.2 現(xiàn)行系統(tǒng)存在的主要問題分析 .4 3.3 提出解決方案 .4 4 系統(tǒng)設(shè)計(jì) .5 4.1 系統(tǒng)總體架構(gòu) .5 4.2 系統(tǒng)界面設(shè)計(jì) .6 4.2.1 界面設(shè)計(jì) .6 4.2.2 用 戶信息 .7 4.3 系統(tǒng)功能模塊設(shè)計(jì) .9 4.3.1 獲取用戶信息 .9 4.3.2 局域網(wǎng)內(nèi)文件傳輸 .13 4.3
11、.3 局域網(wǎng)內(nèi)文件夾傳輸 .17 5 系統(tǒng)實(shí)施及測(cè)試 .22 5.1 實(shí)施概況 .22 5.2 測(cè)試方案 .22 5.3 測(cè)試結(jié)果 .23 參考文獻(xiàn) .24 致 謝 .25 聲 明 .26 第 1 頁 共 26 頁 1 引言 1.1 選題背景 當(dāng)今世界科學(xué)技術(shù)飛速發(fā)展,尤其以計(jì)算機(jī)通信網(wǎng)絡(luò)為代表的互聯(lián)網(wǎng)技術(shù) 更是日新月異,令人眼花燎亂,目不睱接。在計(jì)算機(jī)與網(wǎng)絡(luò)迅速發(fā)展的今天, 借助于網(wǎng)絡(luò)進(jìn)行信息資源交流給人們帶來了極大的方便。各種文件傳輸系統(tǒng)都 已被廣大用戶接受。比如 QQ、UC、Internet 郵件等互聯(lián)網(wǎng)中運(yùn)用最為廣泛的文 件傳輸工具,但它們之間的文件傳輸往往對(duì)遠(yuǎn)程服務(wù)器有非常大的依賴性
12、,沒 有徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)安全的文件傳輸。甚至需要花費(fèi)大量的金錢購買各種移動(dòng)磁 盤或者其他局域網(wǎng)內(nèi)連接主機(jī)的硬件設(shè)備。而達(dá)到的效果卻總是因?yàn)閭鬏斝?以及安全威脅而受到很大的限制。在這種形勢(shì)下,開發(fā)一個(gè)功能簡單而實(shí)用, 能在 Windows 操作系統(tǒng)中運(yùn)行,并且具有可移植性的局域網(wǎng)內(nèi)文件傳輸工具勢(shì) 在必行。 1.2 國內(nèi)外研究現(xiàn)狀 目前,國內(nèi)外企業(yè)對(duì)局域網(wǎng)的文件傳輸系統(tǒng)認(rèn)識(shí)和使用情況并不好,各個(gè) 企業(yè)單位在局域網(wǎng)內(nèi)實(shí)現(xiàn)文件傳輸,資源共享還有很大的缺陷。技術(shù)無論是從 理論上或?qū)嵺`上都還不夠完善。文件傳輸系統(tǒng)由于比較復(fù)雜,可變因素較多, 安全性低,因此發(fā)展還不成熟。 但是隨著科學(xué)技術(shù)的發(fā)展,各種以局域
13、網(wǎng)為單位的文件傳輸系統(tǒng)已經(jīng)進(jìn)入 穩(wěn)健發(fā)展期,比如說市面上比較普遍使用的 QQ、UC、飛鴿傳書等以內(nèi)部網(wǎng)絡(luò)為 中心的資源共享系統(tǒng)也即將進(jìn)入高速發(fā)展期。在國內(nèi),隨著企業(yè)資源管理的規(guī) 范化和規(guī)模的不斷擴(kuò)大,企業(yè)的計(jì)算機(jī)資源管理將不僅僅停留在依靠硬件或者 Internet 網(wǎng)絡(luò)獲取,而且將會(huì)向著安全的內(nèi)部網(wǎng)絡(luò)化資源管理方式邁進(jìn)。 1.3 課題研究的意義 隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展與用戶需求日益多樣化,現(xiàn)代局域網(wǎng)絡(luò)正處在變 革與發(fā)展之中,本課題的主要目的之一是為了更清晰地培養(yǎng)學(xué)生掌握科學(xué)研究 方法的能力和使學(xué)生迅速體會(huì)文件傳輸系統(tǒng)的研發(fā)過程?;诰钟蚓W(wǎng)的文件傳 輸系統(tǒng)能夠讓家庭網(wǎng)絡(luò)以及各個(gè)企業(yè)等局域網(wǎng)對(duì)內(nèi)部
14、資料有一個(gè)快捷,準(zhǔn)確,安 全的共享。特別是對(duì)如今較大系統(tǒng)研發(fā)的模塊分工合作得到了絕對(duì)保密性,從 而使各項(xiàng)工作有計(jì)劃、更科學(xué)的進(jìn)行及順利完成,使企業(yè)的辦事效率得到顯著 提高。文件傳輸系統(tǒng)主要功能是自動(dòng)獲取局域網(wǎng)內(nèi)用戶的主機(jī)名,IP 地址以及 工作組名字,最終以 C/S 模式通過 TCP/IP 協(xié)議實(shí)現(xiàn)點(diǎn)到點(diǎn)文件傳輸功能。 本系統(tǒng)既鍛煉了我們的實(shí)際動(dòng)手能力,使我們將大學(xué)四年所學(xué)的理論知識(shí) 與實(shí)際開發(fā)相結(jié)合,又引導(dǎo)我們進(jìn)行了一次模擬實(shí)際產(chǎn)品的開發(fā),對(duì)于我們以 后工作能力的培養(yǎng)具有重要的意義。 第 2 頁 共 26 頁 2 理論基礎(chǔ) 2.1 TCP/IP 點(diǎn)對(duì)點(diǎn)協(xié)議技術(shù) 系統(tǒng)的文件傳輸功能主要依賴于建
15、立客戶端與服務(wù)器之間點(diǎn)對(duì)點(diǎn)的的連接 后實(shí)現(xiàn)。所以就得與TCP/IP協(xié)議協(xié)合。TCP/IP協(xié)議(Transmission Control Protocol/Internet Protocol)叫做傳輸控制/網(wǎng)際協(xié)議,又叫網(wǎng)絡(luò)通訊協(xié)議, 這個(gè)協(xié)議是Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。TCP/IP是網(wǎng)絡(luò)中使用的基本通信協(xié) 議。雖然從名字上看TCP/IP包括兩個(gè)協(xié)議,傳輸控制協(xié)議(TCP)和網(wǎng)際協(xié)議(IP), 但TCP/IP實(shí)際上是一組協(xié)議,只是TCP協(xié)議處于運(yùn)輸層,它能夠確保文件準(zhǔn)確的 傳送;而IP協(xié)議處于網(wǎng)絡(luò)層,它標(biāo)識(shí)了處于網(wǎng)絡(luò)中任意主機(jī)的唯一身份。TCP協(xié) 議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基
16、本的重要協(xié)議。通常說TCP/IP是 Internet協(xié)議族,而不單單是TCP和IP。 采用TCP/IP詳解的原因: 第一,局域網(wǎng)內(nèi)主機(jī)之間的是依靠IP地址進(jìn)行標(biāo)識(shí)。本設(shè)計(jì)要實(shí)現(xiàn)文件及 文件夾的傳輸就需要以IP地址為傳送基礎(chǔ)進(jìn)行; 第二,新用戶上線后需要向局域網(wǎng)內(nèi)所有用戶廣播自己的主機(jī)信息使網(wǎng)內(nèi) 主機(jī)得到本機(jī)的IP地址等。需要用到與TCP/IP相對(duì)的UDP協(xié)議。 2.2 C/S 架構(gòu)的 DELPHI 程序設(shè)計(jì)技術(shù) 本系統(tǒng)的開發(fā)主要采用 C/S 結(jié)構(gòu)。所謂 C/S (Client/Server)結(jié)構(gòu),即 大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利 用兩端硬件環(huán)境的優(yōu)勢(shì),將
17、信息交互任務(wù)合理分配到 Client 端和 Server 端來 實(shí)現(xiàn),降低了系統(tǒng)文件傳輸過程中的開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu)。傳統(tǒng)的 CS 體系結(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 頁 共 26 頁 Request Response Request Respons
18、e Request Response . . . . Request . Response 圖 1 客戶機(jī)/服務(wù)器通訊結(jié)構(gòu) 文件傳輸系統(tǒng)同時(shí)采用了 Delphi 網(wǎng)絡(luò)組件編程技術(shù)。Delphi 是美國 BORLAND 公司推出的功能強(qiáng)大的應(yīng)用程序開發(fā)工具。它具有簡單、高效、功能 強(qiáng)大的特點(diǎn)。它可是眾多程序員至愛的編程工具。Delphi 具有很多特性:基于 窗體和面向?qū)ο蟮姆椒?,高速的編譯器,與 Windows 編程緊密結(jié)合,強(qiáng)大而成 熟的組件技術(shù)。而且其重要的還有 Object Pascal 語言,它是一切的根本。 Object Pascal 語言是在 Pascal 語言的基礎(chǔ)上發(fā)展起來的,簡
19、單易學(xué)。Delphi 提供了各種開發(fā)工具,包括集成環(huán)境、圖像編輯(Image Editor) ,以及各種開 發(fā)可視化軟件的應(yīng)用程序,如 DesktopDataBase Expert 等。除此之外,還允許 用戶掛接其它的應(yīng)用程序開發(fā)工具,如 Borland 公司的資源編輯器(Resourse Workshop) 。DELPHI 是可視化應(yīng)用編程開發(fā)環(huán)境,可重用性面向?qū)ο缶幊陶Z言, 快速編譯器能夠有效快速建立 WINDOWS 應(yīng)用程序,快速簡化 WINDOWS 與瀏覽器 客戶,WEB 服務(wù)器以及中間件等開發(fā)之外,同時(shí)也支持基于 WEB 服務(wù)的 Microsoft,.net, Sun one 體系,
20、而且提供給 WEB 開發(fā)者需要的可伸縮性和 可靠性。用戶可以開發(fā)支持 WEB 服務(wù)特性的服務(wù)器端和客戶端應(yīng)用,而這一切 都是通過一套高度集成的可視化開發(fā)工具,先進(jìn)的編譯技術(shù)和可重用的組件完 成。 2.3 SOCKET 網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù) 文件傳輸系統(tǒng)得以實(shí)現(xiàn)的根本在于建立有效的連接以及是否存在文件傳輸 載體。所謂 Socket 通常也稱作套接字,用于描述 IP 地址和端口,socket 類 表現(xiàn)了客戶端套接字,它是屬于兩臺(tái)計(jì)算機(jī)的兩個(gè) TCP 通訊端口之間的通訊通 道。在網(wǎng)絡(luò)編程中,客戶端使用 Socket 對(duì)網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā) 服務(wù)器主機(jī) 客戶機(jī) A 客戶機(jī) B 客戶機(jī) C 客戶
21、機(jī) N 第 4 頁 共 26 頁 出連接請(qǐng)求,一旦連接成功,打開會(huì)話;會(huì)話完成后,關(guān)閉 Socket。客戶端不 需要指定打開的端口。服務(wù)器使用 Socket 監(jiān)聽指定的端口,端口可以隨意指定, 等待客戶連接請(qǐng)求,客戶連接后,會(huì)話產(chǎn)生;在完成會(huì)話后,關(guān)閉連接。 3 系統(tǒng)需求分析 3.1 現(xiàn)行業(yè)務(wù)系統(tǒng)描述 目前各種文件資源交流的主要方式可以分為三種:(1)通過局域網(wǎng)內(nèi)主機(jī) 之間以文件共享后再經(jīng)過復(fù)制,粘貼方式實(shí)現(xiàn)。 (2)依靠可移動(dòng)磁盤的兩次信 息轉(zhuǎn)移實(shí)現(xiàn)。 (3)通過 Internet 郵件方式實(shí)現(xiàn)。此三種方法并非不可行,但它 們都需要花費(fèi)較長的時(shí)間以及安全性也得不到保證,工作效率將在很大程度上
22、 受到限制。 如果通過局域網(wǎng)內(nèi)主機(jī)之間復(fù)制粘貼來實(shí)現(xiàn)文件資源共享,將浪費(fèi)大量的 網(wǎng)絡(luò)帶寬,極大程度上影響了網(wǎng)內(nèi)用戶的工作效率,甚至導(dǎo)致用戶不能正常工 作;如果依靠移動(dòng)磁盤實(shí)現(xiàn)文件的共享,將花費(fèi)大量的金錢,而文件較大移動(dòng) 磁盤容量不足的情況下會(huì)令人極為頭疼,何況移動(dòng)磁盤是病毒傳播的重要途徑; 如果通過 Internet 郵件方式實(shí)現(xiàn),用戶需要接入 Internet 服務(wù)器,這種方式 對(duì)遠(yuǎn)程服務(wù)器有非常大的依賴性,即使 1KB 的文件都要經(jīng)歷極度繁瑣的路徑, 不能徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的即時(shí)交流,文件較大的情況下就不言而喻了。最重要的 是,在如今病毒黑客橫行的網(wǎng)絡(luò)世界中,信息的安全性也得不到保證。 綜上所
23、述,依靠 Internet 網(wǎng)絡(luò)等方式實(shí)現(xiàn)文件資源交互的準(zhǔn)確性,快速 性及安全性遠(yuǎn)達(dá)不到理想的要求。 3.2 現(xiàn)行系統(tǒng)存在的主要問題分析 針對(duì)企業(yè)來說,提高工作效率是企業(yè)的一個(gè)重心;降低成本是企業(yè)贏取最 大利益的重要方式;保證信息安全卻是可能影響企業(yè)生死存亡的關(guān)鍵。企業(yè)需 要對(duì)各種因素有足夠深刻的認(rèn)識(shí)才可能實(shí)現(xiàn)最終目標(biāo)-盈利。而傳統(tǒng)的文件資 源交互方式卻存在很多的問題,大致可以分為:一、不能有效地降低文件交互 成本;二、文件交換過程過于繁瑣;三、內(nèi)部機(jī)密資料得不到安全保證;四、 文件交互的準(zhǔn)確性得不到更本保證。 3.3 提出解決方案 解決當(dāng)前問題的方案主要是指在允許的成本、性能要求下,分析系統(tǒng)
24、實(shí)施 的可行性,提出功能實(shí)現(xiàn)的依據(jù),包括其簡單性,安全性以及經(jīng)濟(jì)可行性。根 據(jù)企業(yè)簡單快速,安全的資源共享等要求,提出以下四種解決方案: 1)操作簡單性方案:開發(fā)的系統(tǒng)需要有以下特點(diǎn):Windows 友好的用戶界 面和系統(tǒng)快速的應(yīng)用方法,簡單易操作,不需對(duì)使用人員進(jìn)行培訓(xùn),可以使用 戶很好的掌握。對(duì)傳輸文件過程中的文件的載入設(shè)置都是非常簡單可行,比如: 第 5 頁 共 26 頁 如果用戶忘記選擇文件接收者的時(shí)候系統(tǒng)會(huì)自動(dòng)提示“請(qǐng)選擇接收用戶”要求 用戶選擇主機(jī)而不導(dǎo)致錯(cuò)誤出現(xiàn)而引發(fā)的不便,這樣就大大提高工作效率。而 且開發(fā)的系統(tǒng)應(yīng)該簡單易操作,易維護(hù),減少了不必要的麻煩。對(duì)于家庭局域 網(wǎng)以及一
25、些比較簡單的中小企業(yè)網(wǎng),系統(tǒng)必須做到在實(shí)際應(yīng)用中較為成功。系 統(tǒng)應(yīng)為用戶提供 Windows 所一貫堅(jiān)持的非常友好、操作簡單的用戶界面。 2)傳輸安全性方案:系統(tǒng)開發(fā)完成后,能有效地使內(nèi)部資源與外網(wǎng)的完全 隔離,從而保證了內(nèi)部機(jī)密文件的安全性。 3)經(jīng)濟(jì)可行性方案:系統(tǒng)開發(fā)完成必須作到提高文件共享效率,不管是在 資金上還是效率上都能達(dá)到預(yù)期的效果的。最重要的一點(diǎn)就是:使用戶避免花 費(fèi)高額的資金去購買各種移動(dòng)磁盤甚至是通過 Internet 郵件方式,使得用戶方 便的同時(shí),也讓信息少走了不少“彎路” 。 4)快速準(zhǔn)確性方案:鑒于系統(tǒng)的目標(biāo)要求和特點(diǎn),能夠保證快速準(zhǔn)確地實(shí) 現(xiàn)文件共享。 綜合上述,
26、本設(shè)計(jì)在 Windows XP 操作系統(tǒng)下,以中文版 Delphi7 為開發(fā)工 具,以 C/S 為系統(tǒng)功能結(jié)構(gòu),基于點(diǎn)對(duì)點(diǎn)的 TCP/IP 協(xié)議理論,通過 Socket 套 節(jié)字連接客戶端與服務(wù)器實(shí)現(xiàn)文件及文件夾傳輸。徹底避免了文件交換過程與 外部網(wǎng)絡(luò)的接觸,實(shí)現(xiàn)快速的文件資源共享。并能夠確保內(nèi)部文件的機(jī)密性, 能夠在很大程度上有效地提高工作效率。 4 系統(tǒng)設(shè)計(jì) 4.1 系統(tǒng)總體架構(gòu) 本系統(tǒng)的設(shè)計(jì)過程主要分為兩部分: 第一部分:系統(tǒng)界面的設(shè)計(jì)以及獲取局域網(wǎng)內(nèi)所有在線用戶的主機(jī)名,IP 地址以及工作組名。使網(wǎng)內(nèi)所有用戶都能夠獲取其他用戶信息。 第二部分:文件傳輸是本設(shè)計(jì)功能實(shí)現(xiàn)的核心。系統(tǒng)采用
27、C/S 架構(gòu)將系統(tǒng) 運(yùn)行載體分為兩個(gè)部分:客戶端與服務(wù)器端。文件傳輸需要建立有效的連接后, 通過 TCP/IP 協(xié)議實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的文件傳輸。通信雙方是通過三次握手建立 Socket 連接,實(shí)現(xiàn)文件傳輸,最后關(guān)閉套節(jié)字連接。文件傳輸?shù)恼麄€(gè)流程圖如 下: 第 6 頁 共 26 頁 TCP/IP 3 次握手 SOCKET 流 三次握手 圖 2 文件傳輸系統(tǒng)框架圖 4.2 系統(tǒng)界面設(shè)計(jì) 4.2.1 界面設(shè)計(jì) 界面是系統(tǒng)功能得以實(shí)現(xiàn)的基本平臺(tái),這里充分利用 Delphi 可視化開發(fā)環(huán) 境以各種組件設(shè)置。界面的設(shè)計(jì)可以分為五步: 1)創(chuàng)建一個(gè)工程,制作一個(gè)窗體 form1; 2)在 form1 內(nèi)加入用戶列
28、表 userlist 并設(shè)置列表項(xiàng):用戶名,工作組, IP 地址以及它們的屬性; 3)在 form1 內(nèi)加入 Memo1; 4)在 Memo1 內(nèi)加入各種 DELPHI 網(wǎng)絡(luò)通訊控件,本系統(tǒng)用到的控件分別有: a. 用于傳送文件是打開文件的控件 OpenDialog1; b. 用于接收端保存文件的控件 SaveDialog1; c. 用于點(diǎn)到點(diǎn)文件傳輸?shù)目蛻舳?PClientConnected 及服務(wù)器端 PServerAfterCommandHandler; d. 用于廣播主機(jī)信息的客戶端 ClientStatus 和服務(wù)器端 ServerStatus 數(shù) 據(jù)報(bào)組件; e. 用于設(shè)置退出系統(tǒng)
29、和窗口前端顯示的 PopupMenu1 菜單; 5)分別創(chuàng)建刷新按鈕 BitBtn1,文件傳輸 BitBtn2 以及文件夾傳輸 BitBtn3 按鈕。 客戶端主機(jī) 服務(wù)器端主機(jī) 套節(jié)字連接請(qǐng) 求 連接響應(yīng) 寫入文件流 接收文件流 并保存 斷開連接 斷開連接響應(yīng) LIANJIETCP 第 7 頁 共 26 頁 設(shè)置的界面如下圖: 圖 3 基于局域網(wǎng)的文件傳輸系統(tǒng)界面 4.2.2 用戶信息 用戶列表建立以后,將局域網(wǎng)內(nèi)所有在線用戶的主機(jī)名,主機(jī) IP 地址以及 工作組名顯示于列表中。方法是首先確定用戶主機(jī)是上線信息,返回信息,握 手信息還是離線信息。這里對(duì)他們分別設(shè)置了一個(gè)信息發(fā)送的頭信息,分別設(shè)
30、 置為:LOGIN,HAND 以及 LOGOUT。如果新用戶上線,它就向局域網(wǎng)以 LOGIN 為 頭信息廣播本機(jī)的主機(jī)名,IP 地址以及工作組。局域網(wǎng)內(nèi)所有在線主機(jī)收到該 廣播信息以后將新上線的主機(jī)名,端口,IP 地址以及工作組信息添加到自己的 在線用戶列表并都以 HAND 為頭信息向局域網(wǎng)廣播本機(jī)的握手信息;當(dāng)包括剛上 線主機(jī)在內(nèi)的局域網(wǎng)所有主機(jī)收到這個(gè)握手信息以后線判斷自己的在線用戶列 表中是否存在這個(gè)主機(jī)廣播的主機(jī)信息,如果不存在就說明它是剛上線主機(jī), 最后將這個(gè)信息添加到自己在線列表,否則就不加;當(dāng)用戶下線的時(shí)候也將自 己的信息以 LOGOUT 為頭信息廣播給局域網(wǎng),其他在線用戶收到這
31、個(gè)消息以后將 其主機(jī)信息從本地在線用戶列表刪除。其部分的源代碼分別如下: 第 8 頁 共 26 頁 procedure TForm1.FormCreate(Sender: TObject); /新用戶上線 以 LOGIN 為頭信息 var wsadata:twsadata; myinfobuf:array0.1023of char; /本機(jī)信息 pmyname:array0.1023of char; /本機(jī)名 wList,clist: TStringList ; i,j:integer; begin mainhide; /把程序圖標(biāo)顯示在系統(tǒng)托盤里邊 if wsastartup($101,ws
32、adata)0 then exit; /獲取本機(jī)名 gethostname(pmyname,sizeof(pmyname); /獲取主機(jī)名 myname:=strpas(pmyname);/得到主機(jī)名 try wlist:=tstringlist.Create; clist:=tstringlist.Create; GetServerList(wList); /獲取本機(jī) IP for i:=0 to wlist.Count-1 do begin getusers(wlist.Stringsi,clist);/得到用戶名 for j:=0 to clist.Count-1 do begin if
33、 (clist.Stringsj=uppercase(myname) or (clist.Stringsj=myname) then begin myworkgroup:=wlist.Stringsi; /獲本機(jī)工作組 end; finally wlist.Free; clist.Free; end; myinfo:=format(%-6s%-255s%-255s,LOGIN,myname,myworkgroup); strpcopy(myinfobuf,myinfo); client.Broadcast(myinfobuf,9000); end; function tform1.handda
34、ta(ip,name,workgroup:string;port:integer):string; /向好友發(fā)握手信息 var minfobuf:array0.1023of char; minfo:string; begin minfo:=format(%-6s%-255s%-255s,HAND,name,workgroup); strpcopy(minfobuf,minfo); server.SendBuffer(ip,port,minfobuf,sizeof(minfobuf); end; procedure TForm1.N10Click(Sender: TObject); /用戶離線
35、以 LOGINOUT 為頭信息 var mylogoutbuf:array0.1023of char; mylogoutinfo:string; begin mylogoutinfo:=format(%-6s%-255s,LOGOUT,myname); strpcopy(mylogoutbuf,mylogoutinfo); client.Broadcast(mylogoutbuf,9000); / 廣播自己離線信息 Application.Terminate; /銷毀線程 end; 第 9 頁 共 26 頁 4.3 系統(tǒng)功能模塊設(shè)計(jì) 4.3.1 獲取用戶信息 本部分主要是顯示用戶列表中在線用戶
36、的主機(jī)名,主機(jī)的 IP 地址以及工作 組名三部分,代碼分別進(jìn)行介紹如下: 獲取局域網(wǎng)內(nèi)用戶名的源代碼如下: Function tform1.GetUsers( GroupName : string;List : TStringList) : Boolean; /獲 取工作組的計(jì)算機(jī)名稱 type TNetResourceArray = TNetResource; Var NetResource : TNetResource; Buf : Pointer; Count,BufSize,Res : DWord; Ind : Integer; lphEnum : THandle; Temp : TN
37、etResourceArray; TmpStr:String; Begin Result := False; FillChar(NetResource, SizeOf(NetResource), 0);/初始化網(wǎng)絡(luò)層次信息 NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;/類型為 服務(wù)器(工作組) / NetResource.dwUsage := RESOURCEUSAGE_CONTAINER; NetResource.dwScope := RESOURCETYPE_DISK;/列舉文件資源信 Res := WNetOpenEnu
38、m( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, NetResource,lphEnum); If Res NO_ERROR Then Exit; /執(zhí)行失敗 While True Do/列舉指定工作組的網(wǎng)絡(luò)資源 Begin Count := $FFFFFFFF;/不限資源數(shù)目 BufSize := 8192;/緩沖區(qū)大小設(shè)置為 8K GetMem(Buf, BufSize);/申請(qǐng)內(nèi)存,用于獲取工作組信息 /獲取計(jì)算機(jī)名稱 Res := WNetEnumResource(lphEnum, Count, Poi
39、nter(Buf), BufSize); 第 11 頁 共 26 頁 獲取局域網(wǎng)的用戶 IP 地址以及添加用戶信息的源代碼如下: If Res = ERROR_NO_MORE_ITEMS Then break;/資源列舉完畢 If (Res NO_ERROR) then Exit; /執(zhí)行失敗 Temp := TNetResourceArray(Buf); For Ind := 0 to Count - 1 do/列舉工作組的計(jì)算機(jī)名稱 Begin tmpStr:=Temp.lpRemoteName;/獲取工作組的計(jì)算機(jī)名稱 Delete(tmpstr,1,2); list.Add(tmpst
40、r); Inc(Temp); End; End; Res := WNetCloseEnum(lphEnum);/關(guān)閉一次列舉 If Res NO_ERROR Then exit;/執(zhí)行失敗 Result := True; FreeMem(Buf); End; procedure TForm1.ServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var readbuf:array0.2030of char; msg,head,recvip,recvname,recvworkgroup,recvmsg
41、,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); if head=LOGIN THEN /添加對(duì)方 IP 1.返回對(duì)方 IP 2. 發(fā)出 Hand 握手信息 begin recvip:=abinding.PeerIP; recvport:=900
42、0; 第 12 頁 共 26 頁 獲取局域網(wǎng)的工作組名的源代碼如下: / 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); minfo:=format(%-6s%-
43、4d%-255s,HAND,myname,myworkgroup); /返回對(duì)方 IP /端口等信息 strpcopy(minfobuf,minfo); server.SendBuffer(recvip,recvport,minfobuf,sizeof(minfobuf); end; if head=REVLOGthen /添加對(duì)方返回的自己的 ip (對(duì)比 ) begin / memo1.Lines.Add(revlog recv); RECVPORT:=strtoint(copy(msg,headlen+1,portlen); recvip:=copy(msg,headlen+portle
44、n+1,iplen); end; if head=HAND THEN /處理握手信息 添加對(duì)方 ip 返回對(duì)方 ip 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; if head=LOGOUT
45、 then /處理 logout delete 其 ip begin recvname:=copy(msg,headlen+1,namelen); if mynamerecvname then deleteuser(recvname); end; Function tform1.GetServerList( var List : TStringList ) : Boolean; /獲取服務(wù)列表 Var NetResource : TNetResource; /初始化網(wǎng)絡(luò)層次信息 Buf : Pointer; Count,BufSize,Res : DWORD; lphEnum : THandl
46、e; 第 13 頁 共 26 頁 p : TNetResourceArray; i,j : SmallInt; NetworkTypeList : TList; /返回局域網(wǎng)中的工作組類型 Begin Result := False; NetworkTypeList := TList.Create; /獲取局域網(wǎng)中的工作組信息 List.Clear; /獲取整個(gè)網(wǎng)絡(luò)中的文件資源的句柄,lphEnum 為返回名柄 Res:=WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, Nil,lphEn
47、um); /得到網(wǎng)絡(luò)中的所有工作組的名稱 If Res NO_ERROR Then exit;/Raise Exception(Res);/執(zhí)行失敗 /獲取整個(gè)網(wǎng)絡(luò)中的網(wǎng)絡(luò)類型信息 Count := $FFFFFFFF;/不限資源數(shù)目 BufSize := 8192;/緩沖區(qū)大小設(shè)置為 8K GetMem(Buf, BufSize);/申請(qǐng)內(nèi)存,用于獲取工作組信息 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize); /獲取計(jì)算機(jī)名稱 If ( Res = ERROR_NO_MORE_ITEMS ) /資源列舉完畢 or
48、 (Res NO_ERROR) /執(zhí)行失敗 then break; P := TNetResourceArray(Buf); For I := 0 To Count - 1 Do /列舉各個(gè)工作組的信息 Begin List.Add( StrPAS( P.lpRemoteName ) ;/取得一個(gè)工作組的名稱 Inc(P); End; End; Res := WNetCloseEnum(lphEnum);/關(guān)閉一次列舉 If Res NO_ERROR Then break;/執(zhí)行失敗 End; Result := True; FreeMem(Buf); NetworkTypeList.Dest
49、roy; End; 第 14 頁 共 26 頁 4.3.2 局域網(wǎng)內(nèi)文件傳輸 文件傳輸實(shí)現(xiàn)之前,需要獲取在線用戶列表中的用戶信息。所以系統(tǒng)設(shè)置 一個(gè)“刷新”按鈕,當(dāng)用戶點(diǎn)擊 “刷新”后將更新界面的用戶列表中所有在線 用戶 的主機(jī)名,主機(jī)IP地址和工作組名。并顯示在線人數(shù)。源代碼如下: procedure TSendThread.Execute; /運(yùn)行線程 var socket:tidtcpclient; /定義客戶端套節(jié)字 fs:tfilestream; /定義文件流 begin try socket:=tidtcpclient.Create(nil); /創(chuàng)建客戶端套界字 socket.H
50、ost:=Fip; /寫入 IP socket.Connect(); /進(jìn)行套節(jié)字連接 if socket.Connected then fs:=tfilestream.Create(FFileName,fmopenread); /創(chuàng)建文件流和文件建立關(guān)聯(lián)設(shè)置 /參數(shù) fmopenread=file mode openread try socket.WriteLn(TRANSFILE); /寫入套接字類型為 TRANSFILE socket.WriteLn(FFileName); /寫入傳輸?shù)奈募?socket.WriteLn(inttostr(fs.Size); /整型轉(zhuǎn)字符型 fs.Si
51、ze 為字節(jié)流的長度 procedure TForm1.BitBtn1Click(Sender: TObject); /顯示在線人數(shù) var f:textfile; begin Label2.Caption:=INTTOSTR(USERLIST.Items.Count); end; socket.WriteStream(fs,false,false,fs.Size); /寫入文件 finally fs.Free; /釋放文件流 end; getmem(hostname,255); /post the hostname /分配監(jiān)視器內(nèi)存 zeromemory(hostname,255); /清空
52、內(nèi)存 move(myname1,hostname,length(myName); /獲取傳輸文件名 postmessage(TranSuVisorform.handle,TransferSupervisorTwo,integer(hostname),0); getmem(pname,255); zeromemory(pname,255); /post fname and size move(FFileName1,pname,length(FFileName); postmessage(TranSuVisorform.handle,TransferSupervisor,integer(pname
53、),lSize); end; 第 15 頁 共 26 頁 文件傳輸完畢以后斷開SOCKET連接并釋放套節(jié)字空間。 2)服務(wù)器端響應(yīng)功能: 當(dāng)服務(wù)器收到來自客戶端文件傳輸連接請(qǐng)求后,對(duì)其進(jìn)行連接響應(yīng)建立連 接。連接建立后得到文件的基本信息,進(jìn)行自動(dòng)初始化并分配臨時(shí)空間。如果 文件大小為OK就認(rèn)為是文件傳輸完畢自動(dòng)斷開連接。否則接收文件開始。當(dāng)傳 輸完畢后斷開連接。其源代碼如下: procedure TForm1.PServerExecute(AThread: TIdPeerThread); /服務(wù)器端. var cmd,tmpfn,msg,targetname,localdir,com:stri
54、ng; lsize:int64; fs:tfilestream; filename:pchar; sign,i:integer; ldir:stringarray; lSavePath,Savedir:String; begin with athread.Connection do begin cmd:=trim(readln); / memo1.Lines.Add(cmd); if cmd=TRANSFILEthen begin GetMem(filename,255); zeromemory(filename,255); tmpfn:=readln; move(tmpfn1,filenam
55、e,length(tmpfn); sendmessage(form1.Handle,WM_USER+100,integer(filename),0); writeln(BEGIN); lsize:=strtointdef(readln,0); if lsize=0 then begin disconnect; exit; end; fs:=TFileStream.Create(filename,fmcreate); readstream(fs,lsize); fs.Free; end; if cmd=STARTthen begin msg:=readln(); /接收文件名 ldir:=spl
56、it(msg,); localdir:=strpas(localroot); for i:=0 to high(ldir)-1 do begin localdir:=localdir+ldiri+; if not directoryexists(localdir) then createdir(localdir); /創(chuàng)建接收到的文件夾下邊的文件夾 end; targetname:=strpas(localroot)+msg; /本地文件名 writeln(BEGIN); /發(fā)送開始信號(hào) lsize:=strtointdef(readln,0); /接收文件大小 if lsize=0 then begin disconnect; exit; end; /如果發(fā)過來的文件是 0KB 的 會(huì)收不到 所以 Delete fs:=TFileStream.Create(targetname,fmcreate); readstream(fs,lsize); fs.Free; / openrevfilepath:=trim(strpas(localroot)+trim(ldir0); end; end; end; end; 第 15 頁 共 26 頁
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥事管理與法規(guī)楊世民第2版第一章
- 初中語法-形容詞和副詞
- 《公民的基本權(quán)利和義務(wù)》人教部編版道德與法治課件
- 五年級(jí)上冊(cè)音樂課件-豐收的節(jié)日(2)|人音版(簡譜)最新
- 企業(yè)家商業(yè)計(jì)劃培訓(xùn)教程75275
- 員工保密意識(shí)及技能教育培訓(xùn)課件
- [精選]CAINA肖爾布拉克營銷戰(zhàn)略規(guī)劃(PPT 174頁)5799
- 教育專題:18___跨越百年的美麗
- 北魏孝文帝的改革措施
- 教育專題:兒童防拐教案1
- 數(shù)據(jù)隔離級(jí)別
- 最新2018清新簡約工作匯報(bào)模板【ppt精美模板】
- 電子工藝第5章(精品)
- [精選]中化公司銷售培訓(xùn)77824
- (連云港專版)中考?xì)v史復(fù)習(xí) 第2單元 中國近代史 第9課時(shí) 抗日戰(zhàn)爭(zhēng)和人民解放戰(zhàn)爭(zhēng)的勝利課件 北師大版