版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于局域網(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于局域網(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(wǎng)的文件傳輸系統(tǒng)的設(shè)計(jì)選用 delphi 為開發(fā)工具,以 c/s 模式通過建立 socket 連接后實(shí)
2、現(xiàn)局域網(wǎng)快速,準(zhǔn)確,安全的點(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)鍵詞:關(guān)鍵詞:c/s 結(jié)構(gòu);網(wǎng)絡(luò)通訊組件;點(diǎn)對(duì)點(diǎn);socket 連接the design and imple
3、mentation of file transfer system based on lanabstractalong 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 t
4、o complete. 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,
5、 the 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
6、 file 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 exch
7、ange 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 pres
8、ent 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;
9、fourth, 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引言.11.1選題背景.11.
10、2國內(nèi)外研究現(xiàn)狀.11.3課題研究的意義.12理論基礎(chǔ).22.1tcp/ip 點(diǎn)對(duì)點(diǎn)協(xié)議技術(shù) .22.2c/s 架構(gòu)的 delphi 程序設(shè)計(jì)技術(shù) .22.3socket 網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù) .33系統(tǒng)需求分析.43.1現(xiàn)行業(yè)務(wù)系統(tǒng)描述.43.2現(xiàn)行系統(tǒng)存在的主要問題分析.43.3提出解決方案.44系統(tǒng)設(shè)計(jì).54.1系統(tǒng)總體架構(gòu).54.2系統(tǒng)界面設(shè)計(jì).64.2.1界面設(shè)計(jì).64.2.2用戶信息.74.3系統(tǒng)功能模塊設(shè)計(jì).94.3.1獲取用戶信息.94.3.2局域網(wǎng)內(nèi)文件傳輸.134.3.3局域網(wǎng)內(nèi)文件夾傳輸.175系統(tǒng)實(shí)施及測(cè)試.225.1實(shí)施概況.225.2測(cè)試方案.225.3測(cè)試結(jié)果.23參
11、考文獻(xiàn).24致 謝.25聲 明.26第 1 頁 共 26 頁1 1引言引言1.11.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ù)器有非常大的依賴性,沒有徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)安全的文件傳輸。甚至需要花費(fèi)大量的金錢購買各種移動(dòng)磁盤或者其他局域網(wǎng)內(nèi)連接主機(jī)的硬件設(shè)備。而達(dá)到的效果卻總是因?yàn)閭鬏斝室约鞍踩?/p>
12、威脅而受到很大的限制。在這種形勢(shì)下,開發(fā)一個(gè)功能簡(jiǎn)單而實(shí)用,能在 windows 操作系統(tǒng)中運(yùn)行,并且具有可移植性的局域網(wǎng)內(nèi)文件傳輸工具勢(shì)在必行。1.21.2 國內(nèi)外研究現(xiàn)狀國內(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ā)展,各種以局域網(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)
13、,隨著企業(yè)資源管理的規(guī)范化和規(guī)模的不斷擴(kuò)大,企業(yè)的計(jì)算機(jī)資源管理將不僅僅停留在依靠硬件或者internet 網(wǎng)絡(luò)獲取,而且將會(huì)向著安全的內(nèi)部網(wǎng)絡(luò)化資源管理方式邁進(jìn)。1.31.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)部資料有一個(gè)快捷,準(zhǔn)確,安全的共享。特別是對(duì)如今較大系統(tǒng)研發(fā)的模塊分工合作得到了絕對(duì)保密性,從而使各項(xiàng)工作有計(jì)劃、更科學(xué)的進(jìn)行及順利完成,使企業(yè)的辦事
14、效率得到顯著提高。文件傳輸系統(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 2理論基礎(chǔ)理論基礎(chǔ)2.12.1 tcp/iptcp/ip 點(diǎn)對(duì)點(diǎn)協(xié)議技術(shù)點(diǎn)對(duì)點(diǎn)協(xié)議技術(shù)系統(tǒng)的文件傳輸功能主要依賴于建立客戶端與服務(wù)器之間點(diǎn)對(duì)點(diǎn)的的連接后實(shí)現(xiàn)。所以就得與tcp/ip協(xié)議協(xié)合。tcp/ip協(xié)議(transmission cont
15、rol 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è)基本的重要協(xié)議。通常說tcp/ip是internet協(xié)議族,而不單單是tcp和ip。采用tcp/ip詳解的原因:第一,局域網(wǎng)內(nèi)主機(jī)之間的是依
16、靠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.22.2 c/sc/s 架構(gòu)的架構(gòu)的 delphidelphi 程序設(shè)計(jì)技術(shù)程序設(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ì),將信息交互任務(wù)合理分配到 client 端和 server 端來實(shí)現(xiàn),降低了系統(tǒng)文件傳輸過程中的開銷。目前大多數(shù)應(yīng)用
17、軟件系統(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 responserequest response request response . . . . request . response圖 1 客戶機(jī)/服務(wù)器通訊結(jié)構(gòu)文件傳輸系
18、統(tǒng)同時(shí)采用了 delphi 網(wǎng)絡(luò)組件編程技術(shù)。delphi 是美國borland 公司推出的功能強(qiáng)大的應(yīng)用程序開發(fā)工具。它具有簡(jiǎn)單、高效、功能強(qiáng)大的特點(diǎn)。它可是眾多程序員至愛的編程工具。delphi 具有很多特性:基于窗體和面向?qū)ο蟮姆椒ǎ咚俚木幾g器,與 windows 編程緊密結(jié)合,強(qiáng)大而成熟的組件技術(shù)。而且其重要的還有 object pascal 語言,它是一切的根本。 object pascal 語言是在 pascal 語言的基礎(chǔ)上發(fā)展起來的,簡(jiǎn)單易學(xué)。delphi提供了各種開發(fā)工具,包括集成環(huán)境、圖像編輯(image editor) ,以及各種開發(fā)可視化軟件的應(yīng)用程序,如 deskt
19、opdatabase expert 等。除此之外,還允許用戶掛接其它的應(yīng)用程序開發(fā)工具,如 borland 公司的資源編輯器(resourse workshop) 。delphi 是可視化應(yīng)用編程開發(fā)環(huán)境,可重用性面向?qū)ο缶幊陶Z言,快速編譯器能夠有效快速建立 windows 應(yīng)用程序,快速簡(jiǎn)化 windows 與瀏覽器客戶,web 服務(wù)器以及中間件等開發(fā)之外,同時(shí)也支持基于 web 服務(wù)的microsoft,.net, sun one 體系,而且提供給 web 開發(fā)者需要的可伸縮性和可靠性。用戶可以開發(fā)支持 web 服務(wù)特性的服務(wù)器端和客戶端應(yīng)用,而這一切都是通過一套高度集成的可視化開發(fā)工具,
20、先進(jìn)的編譯技術(shù)和可重用的組件完成。2.32.3 socketsocket 網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù)網(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客戶機(jī) n第 4 頁 共 26 頁出連接請(qǐng)求,一旦連接成功,打開會(huì)話;會(huì)話完成后,關(guān)閉 socket??蛻舳瞬恍枰付ù蜷_的端口。服務(wù)器使用 soc
21、ket 監(jiān)聽指定的端口,端口可以隨意指定,等待客戶連接請(qǐng)求,客戶連接后,會(huì)話產(chǎn)生;在完成會(huì)話后,關(guān)閉連接。3 3系統(tǒng)需求分析系統(tǒng)需求分析3.13.1 現(xiàn)行業(yè)務(wù)系統(tǒng)描述現(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)較長(zhǎng)的時(shí)間以及安全性也得不到保證,工作效率將在很大程度上受到限制。如果通過局域網(wǎng)內(nèi)主機(jī)之間復(fù)制粘貼來實(shí)現(xiàn)文件資源共享,將浪費(fèi)大量的網(wǎng)絡(luò)帶寬,極大程度上影響了網(wǎng)內(nèi)用戶的工作效率,甚至導(dǎo)致
22、用戶不能正常工作;如果依靠移動(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ò)世界中,信息的安全性也得不到保證。 綜上所述,依靠 internet 網(wǎng)絡(luò)等方式實(shí)現(xiàn)文件資源交互的準(zhǔn)確性,快速性及安全性遠(yuǎn)達(dá)不到理想的要求。3.23.2 現(xiàn)行系統(tǒng)存在的主要問題分析現(xiàn)行系統(tǒng)
23、存在的主要問題分析針對(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.33.3 提出解決方案提出解決方案解決當(dāng)前問題的方案主要是指在允許的成本、性能要求下,分析系統(tǒng)實(shí)施的可行性,提出功能實(shí)現(xiàn)的依據(jù),包括其簡(jiǎn)單性,安全性以及經(jīng)濟(jì)可行性。根據(jù)企業(yè)簡(jiǎn)單快速,安全的資源共享等要求,提出以
24、下四種解決方案:1)操作簡(jiǎn)單性方案:開發(fā)的系統(tǒng)需要有以下特點(diǎn):windows 友好的用戶界面和系統(tǒng)快速的應(yīng)用方法,簡(jiǎn)單易操作,不需對(duì)使用人員進(jìn)行培訓(xùn),可以使用戶很好的掌握。對(duì)傳輸文件過程中的文件的載入設(shè)置都是非常簡(jiǎn)單可行,比如:第 5 頁 共 26 頁如果用戶忘記選擇文件接收者的時(shí)候系統(tǒng)會(huì)自動(dòng)提示“請(qǐng)選擇接收用戶”要求用戶選擇主機(jī)而不導(dǎo)致錯(cuò)誤出現(xiàn)而引發(fā)的不便,這樣就大大提高工作效率。而且開發(fā)的系統(tǒng)應(yīng)該簡(jiǎn)單易操作,易維護(hù),減少了不必要的麻煩。對(duì)于家庭局域網(wǎng)以及一些比較簡(jiǎn)單的中小企業(yè)網(wǎng),系統(tǒng)必須做到在實(shí)際應(yīng)用中較為成功。系統(tǒng)應(yīng)為用戶提供 windows 所一貫堅(jiān)持的非常友好、操作簡(jiǎn)單的用戶界面。2
25、)傳輸安全性方案:系統(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)文件共享。綜合上述,本設(shè)計(jì)在 windows xp 操作系統(tǒng)下,以中文版 delphi7 為開發(fā)工具,以 c/s 為系統(tǒng)功能結(jié)構(gòu),基于點(diǎn)對(duì)點(diǎn)的 tcp/ip 協(xié)議理論,通過 s
26、ocket 套節(jié)字連接客戶端與服務(wù)器實(shí)現(xiàn)文件及文件夾傳輸。徹底避免了文件交換過程與外部網(wǎng)絡(luò)的接觸,實(shí)現(xiàn)快速的文件資源共享。并能夠確保內(nèi)部文件的機(jī)密性,能夠在很大程度上有效地提高工作效率。4 4系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)4.14.1 系統(tǒng)總體架構(gòu)系統(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)采用 c/s 架構(gòu)將系統(tǒng)運(yùn)行載體分為兩個(gè)部分:客戶端與服務(wù)器端。文件傳輸需要建立有效的連接后,通過 tcp/ip 協(xié)議實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的文件傳輸。通信雙方是通過
27、三次握手建立socket 連接,實(shí)現(xiàn)文件傳輸,最后關(guān)閉套節(jié)字連接。文件傳輸?shù)恼麄€(gè)流程圖如下:第 6 頁 共 26 頁tcp/ip3 次握手socket 流 三次握手圖 2 文件傳輸系統(tǒng)框架圖4.24.2 系統(tǒng)界面設(shè)計(jì)系統(tǒng)界面設(shè)計(jì)4.2.1界面設(shè)計(jì)界面設(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)加入用戶列表 userlist 并設(shè)置列表項(xiàng):用戶名,工作組,ip 地址以及它們的屬性;3)在 form1 內(nèi)加入 memo1;4)在 memo1 內(nèi)加入各種 de
28、lphi 網(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)和窗口前端顯示的 popupmenu1 菜單;5)分別創(chuàng)建刷新按鈕 bitbtn1,文件傳輸 bitbtn2 以及文件夾傳輸 bitbtn3按鈕。客戶端主機(jī)服務(wù)器端主機(jī)套節(jié)字
29、連接請(qǐng)求連接響應(yīng)寫入文件流接收文件流并保存斷開連接斷開連接響應(yīng)第 7 頁 共 26 頁設(shè)置的界面如下圖:圖 3 基于局域網(wǎng)的文件傳輸系統(tǒng)界面4.2.2用戶信息用戶信息用戶列表建立以后,將局域網(wǎng)內(nèi)所有在線用戶的主機(jī)名,主機(jī) ip 地址以及工作組名顯示于列表中。方法是首先確定用戶主機(jī)是上線信息,返回信息,握手信息還是離線信息。這里對(duì)他們分別設(shè)置了一個(gè)信息發(fā)送的頭信息,分別設(shè)置為:login,hand 以及 logout。如果新用戶上線,它就向局域網(wǎng)以 login 為頭信息廣播本機(jī)的主機(jī)名,ip 地址以及工作組。局域網(wǎng)內(nèi)所有在線主機(jī)收到該廣播信息以后將新上線的主機(jī)名,端口,ip 地址以及工作組信息添
30、加到自己的在線用戶列表并都以 hand 為頭信息向局域網(wǎng)廣播本機(jī)的握手信息;當(dāng)包括剛上線主機(jī)在內(nèi)的局域網(wǎng)所有主機(jī)收到這個(gè)握手信息以后線判斷自己的在線用戶列表中是否存在這個(gè)主機(jī)廣播的主機(jī)信息,如果不存在就說明它是剛上線主機(jī),最后將這個(gè)信息添加到自己在線列表,否則就不加;當(dāng)用戶下線的時(shí)候也將自己的信息以 logout 為頭信息廣播給局域網(wǎng),其他在線用戶收到這個(gè)消息以后將其主機(jī)信息從本地在線用戶列表刪除。其部分的源代碼分別如下:第 8 頁 共 26 頁procedure tform1.formcreate(sender: tobject); /新用戶上線 以 login 為頭信息var wsadat
31、a: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,wsadata)0 then exit; /獲取本機(jī)名 gethostname(pmyname,sizeof(pmyname); /獲取主機(jī)名 myname:=strpas(pmyname);/得到主機(jī)名 try wlist:=tstringlist.crea
32、te; 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 (clist.stringsj=uppercase(myname) or (clist.stringsj=myname) then begin myworkgroup:=wlist.stringsi; /獲本機(jī)工作組 end; finally wlist
33、.free; clist.free; end; myinfo:=format(%-6s%-255s%-255s,login,myname,myworkgroup); strpcopy(myinfobuf,myinfo); client.broadcast(myinfobuf,9000); end;function tform1.handdata(ip,name,workgroup:string;port:integer):string; /向好友發(fā)握手信息 var minfobuf:array0.1023of char; minfo:string;begin minfo:=format(%-6
34、s%-255s%-255s,hand,name,workgroup); strpcopy(minfobuf,minfo); server.sendbuffer(ip,port,minfobuf,sizeof(minfobuf);end;procedure tform1.n10click(sender: tobject); /用戶離線 以 loginout 為頭信息var mylogoutbuf:array0.1023of char; mylogoutinfo:string;begin mylogoutinfo:=format(%-6s%-255s,logout,myname); strpcop
35、y(mylogoutbuf,mylogoutinfo); client.broadcast(mylogoutbuf,9000); / 廣播自己離線信息 application.terminate; /銷毀線程end;第 9 頁 共 26 頁4.34.3 系統(tǒng)功能模塊設(shè)計(jì)系統(tǒng)功能模塊設(shè)計(jì)4.3.1 獲取用戶信息獲取用戶信息本部分主要是顯示用戶列表中在線用戶的主機(jī)名,主機(jī)的 ip 地址以及工作組名三部分,代碼分別進(jìn)行介紹如下:獲取局域網(wǎng)內(nèi)用戶名的源代碼如下:function tform1.getusers( groupname : string;list : tstringlist) : bool
36、ean; /獲取工作組的計(jì)算機(jī)名稱type tnetresourcearray = tnetresource;varnetresource : tnetresource;buf : pointer;count,bufsize,res : dword;ind : integer;lphenum : thandle;temp : tnetresourcearray;tmpstr:string;beginresult := false;fillchar(netresource, sizeof(netresource), 0);/初始化網(wǎng)絡(luò)層次信息netresource.dwdisplaytype :
37、= resourcedisplaytype_server;/類型為服務(wù)器(工作組)/ netresource.dwusage := resourceusage_container;netresource.dwscope := resourcetype_disk;/列舉文件資源信res := wnetopenenum( resource_globalnet, resourcetype_disk,resourceusage_container, netresource,lphenum);if res no_error then exit; /執(zhí)行失敗while true do/列舉指定工作組的網(wǎng)絡(luò)
38、資源begincount := $ffffffff;/不限資源數(shù)目bufsize := 8192;/緩沖區(qū)大小設(shè)置為 8kgetmem(buf, bufsize);/申請(qǐng)內(nèi)存,用于獲取工作組信息/獲取計(jì)算機(jī)名稱 res := wnetenumresource(lphenum, count, pointer(buf), bufsize);第 11 頁 共 26 頁獲取局域網(wǎng)的用戶 ip 地址以及添加用戶信息的源代碼如下:if res = error_no_more_items then break;/資源列舉完畢 if (res no_error) then exit; /執(zhí)行失敗 temp :
39、= tnetresourcearray(buf); for ind := 0 to count - 1 do/列舉工作組的計(jì)算機(jī)名稱 begin tmpstr:=temp.lpremotename;/獲取工作組的計(jì)算機(jī)名稱 delete(tmpstr,1,2); list.add(tmpstr); inc(temp); end; end; res := wnetcloseenum(lphenum);/關(guān)閉一次列舉 if res no_error then exit;/執(zhí)行失敗result := true; freemem(buf);end;procedure tform1.serverudpr
40、ead(sender: tobject; adata: tstream; abinding: tidsockethandle);var readbuf:array0.2030of 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
41、.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:=9000;第 12 頁 共 26 頁獲取局域網(wǎng)的工作組名的源代碼如下: / memo1.lines.add(login recv+recvip+inttostr(recvport); recvname:=copy(msg,headlen+1,namelen); recvworkgroup:=copy(msg,headlen
42、+namelen+1,length(msg); adduser(recvname,recvworkgroup,recvip,recvport); handdata(recvip,myname,myworkgroup,recvport); minfo:=format(%-6s%-4d%-255s,hand,myname,myworkgroup); /返回對(duì)方 ip /端口等信息 strpcopy(minfobuf,minfo); server.sendbuffer(recvip,recvport,minfobuf,sizeof(minfobuf); end; if head=revlogthen
43、 /添加對(duì)方返回的自己的 ip (對(duì)比) begin / memo1.lines.add(revlog recv); recvport:=strtoint(copy(msg,headlen+1,portlen); recvip:=copy(msg,headlen+portlen+1,iplen); end;if head=handthen /處理握手信息 添加對(duì)方 ip 返回對(duì)方 ip begin / memo1.lines.add(hand recv); recvname:=copy(msg,headlen+1,namelen); recvworkgroup:=copy(msg,headle
44、n+namelen+1,workglen); recvip:=abinding.peerip; recvport:=9000; recvp2pdata(recvip,recvname,recvworkgroup,recvport); end;if head=logoutthen /處理 logout delete 其 ip begin recvname:=copy(msg,headlen+1,namelen); if mynamerecvname then deleteuser(recvname); end;function tform1.getserverlist( var list : t
45、stringlist ) : boolean; /獲取服務(wù)列表var netresource : tnetresource; /初始化網(wǎng)絡(luò)層次信息buf : pointer;count,bufsize,res : dword;lphenum : thandle;第 13 頁 共 26 頁p : tnetresourcearray;i,j : smallint;networktypelist : tlist; /返回局域網(wǎng)中的工作組類型beginresult := false;networktypelist := tlist.create; /獲取局域網(wǎng)中的工作組信息list.clear;/獲取
46、整個(gè)網(wǎng)絡(luò)中的文件資源的句柄,lphenum 為返回名柄res:=wnetopenenum( resource_globalnet, resourcetype_disk, resourceusage_container, nil,lphenum); /得到網(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è)置為 8kgetmem(buf, bufsize);/申請(qǐng)內(nèi)存,用于獲取工作組信息res
47、 := wnetenumresource(lphenum, count, pointer(buf), bufsize); /獲取計(jì)算機(jī)名稱if ( res = error_no_more_items ) /資源列舉完畢or (res no_error) /執(zhí)行失敗then break;p := tnetresourcearray(buf);for i := 0 to count - 1 do /列舉各個(gè)工作組的信息beginlist.add( strpas( p.lpremotename ) ;/取得一個(gè)工作組的名稱inc(p);end;end;res := wnetcloseenum(lph
48、enum);/關(guān)閉一次列舉if res no_error then break;/執(zhí)行失敗end;result := true;freemem(buf);networktypelist.destroy;end; 第 14 頁 共 26 頁4.3.2 局域網(wǎng)內(nèi)文件傳輸局域網(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:tidtcpclien
49、t; /定義客戶端套節(jié)字 fs:tfilestream; /定義文件流begintry socket:=tidtcpclient.create(nil); /創(chuàng)建客戶端套界字 socket.host:=fip; /寫入 ipsocket.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); /寫入套接字類型為
50、 transfile socket.writeln(ffilename); /寫入傳輸?shù)奈募?socket.writeln(inttostr(fs.size); /整型轉(zhuǎn)字符型 fs.size 為字節(jié)流的長(zhǎng)度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);
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土質(zhì)檢員工作總結(jié)報(bào)告20篇
- 銷售組長(zhǎng)工作總結(jié)范文5篇
- 銷售員工個(gè)人發(fā)言稿(素材下載8篇)
- 污泥處理處置中心工程項(xiàng)目可行性研究報(bào)告
- 離子膜燒堿技改工程可行性研究報(bào)告
- 青協(xié)個(gè)人工作計(jì)劃5篇
- 高中班主任工作計(jì)劃下學(xué)期5篇
- 主題公園綠化景觀設(shè)計(jì)合同
- 影視后期制作合同模版
- 倉儲(chǔ)物流鋼板樁施工合同
- 2023年?duì)I養(yǎng)師、營養(yǎng)指導(dǎo)員專業(yè)技能及理論知識(shí)考試題庫(附含答案)
- 斜井敷設(shè)電纜措施
- 施工機(jī)械設(shè)備租賃實(shí)施方案
- 牙膏產(chǎn)品知識(shí)課件
- 液化氣站人員勞動(dòng)合同范本
- 第一章 教育政策學(xué)概述
- 常見土源性寄生蟲演示文稿
- 全員育人導(dǎo)師制學(xué)生談話記錄
- 了解學(xué)前兒童科學(xué)領(lǐng)域核心經(jīng)驗(yàn)
- 幼兒園師德師風(fēng)考核表實(shí)用文檔
- 2023年職業(yè)技能-外匯業(yè)務(wù)考試歷年真題甄選版帶答案-1
評(píng)論
0/150
提交評(píng)論