畢業(yè)設(shè)計(jì)(論文)基于socket的文件傳輸系統(tǒng)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于socket的文件傳輸系統(tǒng)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于socket的文件傳輸系統(tǒng)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于socket的文件傳輸系統(tǒng)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于socket的文件傳輸系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、密 級(jí) 公 開 學(xué) 號(hào) xx學(xué)院畢業(yè)論文(設(shè)計(jì))基于socket的局域網(wǎng)文件傳輸系統(tǒng) 論文作者指導(dǎo)教師所屬學(xué)院專業(yè)本科專科年級(jí)論文提交日期論文答辯日期xxxxxx數(shù)學(xué)與計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)本科2007級(jí)2011年5月20日2011年5月 28日 畢業(yè)論文(設(shè)計(jì))學(xué)術(shù)承諾本人鄭重承諾:所呈交的畢業(yè)論文是本人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果.除了文中特別加以標(biāo)注和致謝的地方外,論文中不存在抄襲情況,論文中不包含其他人已經(jīng)發(fā)表的研究成果,也不包含他人或其他教學(xué)機(jī)構(gòu)取得的研究成果.作者簽名: 日 期: 畢業(yè)論文(設(shè)計(jì))使用授權(quán)的說明本人了解并遵守衡水學(xué)院有關(guān)保留、使用畢業(yè)論文的規(guī)定。即

2、:學(xué)校有權(quán)保留或向有關(guān)部門送交畢業(yè)論文的原件或復(fù)印件,允許論文被查閱和借閱;學(xué)校可以公開論文的全部或部分內(nèi)容,可以采用影印、縮印或其他復(fù)制手段保存論文及相關(guān)資料。作者簽名: 指導(dǎo)教師簽名: 日 期: 日 期: 07級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)畢業(yè)論文基于socket的局域網(wǎng)文件傳輸系統(tǒng)摘 要:文件傳輸是通過一條網(wǎng)絡(luò)連接從遠(yuǎn)地站點(diǎn)向本地主機(jī)復(fù)制文件。當(dāng)前internet上有著各種文件傳輸文件,例如qq等。但大多數(shù)是需要遠(yuǎn)地服務(wù)器控制的。因此對(duì)于一些僅需在局域網(wǎng)內(nèi)部完成的傳輸工作存在著風(fēng)險(xiǎn)和資源浪費(fèi)?;趕ocket的局域網(wǎng)文件傳輸系統(tǒng)是用java語言在myeclipse for spring 8.6環(huán)

3、境下開發(fā)完成的一種適用于局域網(wǎng)的內(nèi)部文件傳輸系統(tǒng)。它具有聊天和文件傳輸兩個(gè)功能,可滿足校園網(wǎng)等小范圍內(nèi)的日常工作和學(xué)習(xí)??蛻舳穗p方及服務(wù)器在tcp協(xié)議基礎(chǔ)上建立socket連接之后,客戶端可以從服務(wù)器上獲取其它登陸用戶的用戶名和ip地址等信息,在用戶通訊前彼此的客戶端還應(yīng)該進(jìn)行連接,它們之間的具體通訊過程是不需要通過服務(wù)器的點(diǎn)對(duì)點(diǎn)通訊。關(guān)鍵詞:java;點(diǎn)對(duì)點(diǎn);socket連接 iiititle: the design and implementation of file transfer system based on lanabstract: file transfer copy file

4、s from the remote site to the local host through a network connection. the internet has various file transfer documents, such as qq, etc. but most remote server control is required. so for some internal completed only in the local area network transmission there is a risk and waste of resources. bas

5、ed on the lan socket with file transfer system is in myeclipse for java language are completed under the environment of 8.6 development which is suitable for lan internal documents transmitting system. it has a chat and file transfer two functions, can meet the campus network and other small range o

6、f daily work and study. the client and server in both parties based on tcp protocol after socket connection from the server, the client can obtain other landing users user name and ip address and other information, in user communication before each others client should also connects, the specific co

7、mmunications between them is not to need to process through the servers peer-to-peer communication.keywords: java; peer-to-peer; socket connection 目 錄abstract:ii1 緒論11.1選題背景11.2選題意義11.3 前人的工作成果11.4 本文的主要工作22開發(fā)環(huán)境和相關(guān)技術(shù)簡(jiǎn)介32.1 myeclipse及myeclipse for spring32.2tcpip協(xié)議簡(jiǎn)介42.3基于socket的java網(wǎng)絡(luò)編程技術(shù)介紹42.3.1什么是

8、socket42.3.2socket的運(yùn)行機(jī)制圖52.3.3如何進(jìn)行socket編程53 設(shè)計(jì)方案介紹73.1系統(tǒng)需求分析73.2服務(wù)器、客戶器功能介紹83.2.1服務(wù)器功能介紹83.2.2客戶端功能介紹94實(shí)現(xiàn)過程分析114.1系統(tǒng)通訊過程流程圖114.2服務(wù)器、客戶端通訊過程設(shè)計(jì)分析114.2.1服務(wù)器端分析114.2.2客戶端分析145 軟件運(yùn)行測(cè)試圖175.1服務(wù)器運(yùn)行測(cè)試175.2客戶端運(yùn)行測(cè)試17結(jié)語22參考文獻(xiàn)23致 謝24附錄2配置及安裝說明25附錄2源代碼26柳亞林:vlan在校園網(wǎng)中的高效應(yīng)用第 ix 頁(yè) 共 5 頁(yè)07級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)畢業(yè)論文1 緒論1.1選題背景當(dāng)

9、今世界科學(xué)技術(shù)飛速發(fā)今天,借助于網(wǎng)絡(luò)進(jìn)行信息資源交流給人們帶來了極大的方便。各種文件傳輸系統(tǒng)都已被廣大用戶接受。比如qq、uc、internet郵件等互聯(lián)網(wǎng)上的文件傳輸。甚至需要花費(fèi)大量的金錢購(gòu)買各種移動(dòng)磁盤或者其他局域網(wǎng)內(nèi)連接主機(jī)的硬件設(shè)備。而達(dá)到的效果卻總是因?yàn)閭鬏斝室约鞍踩{而受到很大的限制。在這種形勢(shì)下,開發(fā)一個(gè)功能簡(jiǎn)單而實(shí)用,能在windows操作系統(tǒng)中運(yùn)行,并且具有可移植性的局域網(wǎng)內(nèi)文件傳輸工具勢(shì)在必行。1.2選題意義隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展與用戶需求日益多樣化,現(xiàn)代局域網(wǎng)絡(luò)正處在變革與發(fā)展之中,本課題的主要目的之一是為了更清晰地培養(yǎng)學(xué)生掌握科學(xué)研究方法的能力和使學(xué)生迅速體會(huì)文件

10、傳輸系統(tǒng)的研發(fā)過程。基于局域網(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è)的辦事效率得到顯著提高。文件傳輸系統(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)具有重要的意義。1.3 前人的工作成果目前,國(guó)內(nèi)外企業(yè)對(duì)局域網(wǎng)的文

11、件傳輸系實(shí)踐上都還不夠完善。文件傳輸系統(tǒng)由于比較復(fù)雜,可變因素較多,安全性低,因此發(fā)展還不成熟。但是隨著科學(xué)技術(shù)的發(fā)展,各為中心的資源共享系統(tǒng)也即將進(jìn)入高速發(fā)展期。在國(guó)內(nèi),隨著企業(yè)資源管理的規(guī)范化和規(guī)模的不斷擴(kuò)大,企業(yè)的計(jì)算機(jī)資源管理將不僅僅停留在依靠硬件或者internet網(wǎng)絡(luò)獲取,而且將會(huì)向著安全的內(nèi)部網(wǎng)絡(luò)化資源管理方式邁進(jìn)。在此之前,人們已經(jīng)在網(wǎng)絡(luò)通信這個(gè)問題上做了許多的工作,開發(fā)了大量的文檔、程序和應(yīng)用軟件,如richard stevens的unix network programming介紹了在unix操作系統(tǒng)下通過socket實(shí)現(xiàn)網(wǎng)絡(luò)通信的基本原理及實(shí)現(xiàn)方式,microsoft的w

12、indows sockets api提供了一種快速編程實(shí)現(xiàn)socket網(wǎng)絡(luò)通信的機(jī)制。前人的這些工作無疑為我們提供了寶貴的經(jīng)驗(yàn)和快速的開發(fā)方法以及現(xiàn)成的開發(fā)實(shí)例。然而,前人已有的工作成果已經(jīng)無法完全滿足我們的需求,即提供一種基于socket的,易于使用具有高度可定制性的,面向中小企業(yè)內(nèi)部通信需求的局域網(wǎng)通信軟件。1.4 本文的主要工作論文主要針對(duì)公司或其他小范圍內(nèi)部局域網(wǎng)落設(shè)計(jì)出一種方便使用的、高性能的、并滿足其基本通信需求的局域網(wǎng)文件傳輸系統(tǒng)(包含文件傳輸和聊天部分)??蛻舳伺c服務(wù)器端可以在多種硬件平臺(tái)上運(yùn)行,具有較好好的兼容性能。目前我們將通過在tcp/ip協(xié)議之上建立一個(gè)功能簡(jiǎn)單的文件傳

13、輸系統(tǒng)(包含文件傳輸和聊天部分), 日后程序功能將可以繼續(xù)擴(kuò)展, 逐步發(fā)展成一個(gè)功能比較完整的大型文件傳輸系統(tǒng),例如加上文件續(xù)傳功能,客戶端連接發(fā)展成多對(duì)多連接,服務(wù)器增加為客戶深一步服務(wù)(如發(fā)布一些消息)的功能等。2開發(fā)環(huán)境和相關(guān)技術(shù)簡(jiǎn)介2.1 myeclipse及myeclipse for springmyeclipse企業(yè)級(jí)工作平臺(tái)(myeclipse enterprise workbench ,簡(jiǎn)稱myeclipse)是對(duì)eclipse ide的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和j2ee的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的j2ee集成開發(fā)環(huán)境,包括了

14、完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持html, struts, jsf, css, javascript, sql, hibernate。在結(jié)構(gòu)上,myeclipse的特征可以被分為7類:1. j2ee模型2. web開發(fā)工具3. ejb開發(fā)工具4. 應(yīng)用程序服務(wù)器的連接器5. j2ee項(xiàng)目部署服務(wù)6. 數(shù)據(jù)庫(kù)服務(wù)7. myeclipse整合幫助對(duì)于以上每一種功能上的類別,在eclipse中都有相應(yīng)的功能部件,并通過一系列的插件來實(shí)現(xiàn)它們。myeclipse結(jié)構(gòu)上的這種模塊化,可以讓我們?cè)诓挥绊懫渌K的情況下,對(duì)任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級(jí)。簡(jiǎn)單而言,myeclipse是eclipse

15、的插件,也是一款功能強(qiáng)大的j2ee集成開發(fā)環(huán)境,支持代碼編寫、配置、測(cè)試以及除錯(cuò)。而myeclipse for spring是在myeclipse的基礎(chǔ)上,加強(qiáng)了對(duì)spring的支持。myeclipse for spring 是myeclipse家族的成員之一,其最大的特點(diǎn)就是提 供了更強(qiáng)悍的針對(duì)spring框架的支持。其實(shí)在myeclipse 中已經(jīng)提供了針對(duì)spring框架的一些支持,集成了spring ide,但是這些對(duì)于那些針對(duì)spring開發(fā)的開發(fā)者來說或許還不足夠,他們需要的是更強(qiáng)大,更有針對(duì)性的開發(fā)工具。由于spring的廣泛使用以及 spring開發(fā)者的呼聲高漲,myeclip

16、se for spring 隨之出現(xiàn)。myeclipse for spring 提供對(duì)spring mvc的強(qiáng)大支持功能,針對(duì)spring的更專業(yè)的編輯器,以及針對(duì)spring項(xiàng)目的項(xiàng)目創(chuàng)建向?qū)У裙δ?,讓spring開發(fā)者可以更輕松的通過 myeclipse for spring 快速創(chuàng)建一個(gè)基于spring的應(yīng)用。除此之外myeclipse for spring 8.5也提供了myeclipse 8.5幾乎全部特性支持,這讓myeclipse for spring 比myeclipse幾乎是有過之而無不及。整合ssh有手動(dòng)的有自動(dòng)的,要想徹底掌握,建議一個(gè)框架一個(gè)框架的學(xué)習(xí),學(xué)習(xí)完三個(gè)框架自

17、然就會(huì)整合了。2.2tcpip協(xié)議簡(jiǎn)介tcp/ip(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是網(wǎng)絡(luò)中使用的基本通信協(xié)議。雖然從名字上看tcp/ip包括兩種協(xié)議,即傳輸控制協(xié)議(tcp)和網(wǎng)際協(xié)議(ip),但是tcp/ip實(shí)際上是一組協(xié)議4。它是異構(gòu)網(wǎng)絡(luò)互連的通信協(xié)議,通過它可以實(shí)現(xiàn)各種異構(gòu)網(wǎng)絡(luò)或異種機(jī)之間的互聯(lián)通信。 tcp/ip已成為當(dāng)今計(jì)算機(jī)網(wǎng)絡(luò)最成熟、應(yīng)用最廣的互聯(lián)協(xié)議。internet采用的就是tcp/ip協(xié)議,網(wǎng)絡(luò)上各種各樣的計(jì)算機(jī)上只要安裝了tcp/ip協(xié)議,它們之間就能相互通信。運(yùn)行tcp/ip協(xié)議的網(wǎng)絡(luò)是一種采用包(分組)交換網(wǎng)絡(luò)?;趖cp/ip的參考模型將協(xié)議分成四個(gè)層次,它們分別是:網(wǎng)絡(luò)

18、訪問層、網(wǎng)際互連層、傳輸層(主機(jī)到主機(jī))、和應(yīng)用層。應(yīng)用層對(duì)應(yīng)于osi參考模型的高層,為用戶提供所需要的各種服務(wù),例如:ftp、telnet、dns、smtp等。傳輸層對(duì)應(yīng)于osi參考模型的傳輸層,為應(yīng)用層實(shí)體提供端到端的通信功能。該層定義了兩個(gè)主要的協(xié)議:傳輸控制協(xié)議(tcp)和用戶數(shù)據(jù)報(bào)協(xié)議(udp)。 tcp協(xié)議提供的是一種可靠的、面向連接的數(shù)據(jù)傳輸服務(wù);而udp協(xié)議供的是不可靠的、無連接的數(shù)據(jù)傳輸服務(wù)。網(wǎng)際互聯(lián)層主要解決主機(jī)到主機(jī)的通信問題。該層有四個(gè)主要協(xié)議:網(wǎng)際協(xié)議(ip)、地址解析協(xié)議(arp)、互聯(lián)網(wǎng)組管理協(xié)議(igmp)和互聯(lián)網(wǎng)控制報(bào)文協(xié)議(icmp)。 ip協(xié)議是網(wǎng)際互聯(lián)層

19、最重要的協(xié)議,它提供的是一個(gè)不可靠、無連接的數(shù)據(jù)報(bào)傳遞服務(wù)。網(wǎng)絡(luò)訪問層與osi參考模型中的物理層和數(shù)據(jù)鏈路層相對(duì)應(yīng)。事實(shí)上,tcp/ip本身并未定義該層的協(xié)議,而由參與互連的各網(wǎng)絡(luò)使用自己的物理層和數(shù)據(jù)鏈路層協(xié)議,然后與tcp/ip的網(wǎng)絡(luò)訪問層進(jìn)行連接1。2.3基于socket的java網(wǎng)絡(luò)編程技術(shù)介紹2.3.1什么是socket網(wǎng)絡(luò)上的兩個(gè)程序通過一個(gè)雙向的通訊連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)雙向鏈路的一端稱為一個(gè)socket。socket通常用來實(shí)現(xiàn)客戶方和服務(wù)方的連接。socket是tcp/ip協(xié)議的一個(gè)十分流行的編程界面,一個(gè)socket由一個(gè)ip地址和一個(gè)端口號(hào)唯一確定。但是,socket所

20、支持的協(xié)議種類也不光tcp/ip一種,因此兩者之間是沒有必然聯(lián)系的。在java環(huán)境下,socket編程主要是指基于tcp/ip協(xié)議的網(wǎng)絡(luò)編程2。2.3.2socket的運(yùn)行機(jī)制圖一般而言,socket大部分應(yīng)用于服務(wù)器與客戶端的連接與通信,本系統(tǒng)雖然有服務(wù)器,但并不實(shí)際參與用戶間的交流和文件傳輸,只起到輔助作用,所以在文件傳輸時(shí)客戶端與客戶端之間其實(shí)是互為服務(wù)器的,圖2- 1是從服務(wù)器與客戶端之間的關(guān)系來描述socket通信機(jī)制。圖2- 2socket通訊機(jī)制2.3.3如何進(jìn)行socket編程java在包中提供了兩個(gè)類socket和serversocket,分別用來表示雙向連接的客戶端和服務(wù)端

21、。這是兩個(gè)封裝得非常好的類。 首先是socket類,其表示tcp連接的客戶方,代表了通信的一方,常用的構(gòu)造方法有:public socket(ineraddress address,int port) throw ioexception3public socket(string host,int port) throws unknownhostexception,ioexception從上述定義克制,在引用socket構(gòu)造方法是,需要指定兩個(gè)參數(shù),即“服務(wù)器”程序所在的ip地址和其監(jiān)聽的端口號(hào)。創(chuàng)建對(duì)象是若發(fā)生i/o錯(cuò)誤,則構(gòu)造方法需拋出ioexception異常。上述近視通信的一方即客戶端,

22、若要真正完成通信,還需要相應(yīng)的、能更客戶的請(qǐng)求作出響應(yīng)的服務(wù)器程序.serversocket類是加吧網(wǎng)絡(luò)api中提供的服務(wù)器功能的類,常用構(gòu)造方法為:public serversocket(int port) throws ioexception3該構(gòu)造方法是常見一個(gè)serversocket對(duì)象,并綁定到所指定的端口上。有了該對(duì)象,就可以完成旗艦廳端口和等待連接的功能。3 設(shè)計(jì)方案介紹3.1系統(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郵

23、件方式實(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)致用戶不能正常工作;如果依靠移動(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í)交流,文件較大的情況下就不言而喻了。最

24、重要的是,在如今病毒黑客橫行的網(wǎng)絡(luò)世界中,信息的安全性也得不到保證。綜上所述,依靠internet網(wǎng)絡(luò)等方式實(shí)現(xiàn)文件資源交互的準(zhǔn)確性,快速性及安全性遠(yuǎn)達(dá)不到理想的要求。現(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)確性得不到更本保證。解決方案:解決當(dāng)前問題的方案主要是指

25、在允許的成本、性能要求下,分析系統(tǒng)實(shí)施的可行性,提出功能實(shí)現(xiàn)的依據(jù),包括其簡(jiǎn)單性,安全性以及經(jīng)濟(jì)可行性。根據(jù)企業(yè)簡(jiǎn)單快速,安全的資源共享等要求,提出以下四種解決方案:1)操作簡(jiǎn)單性方案:開發(fā)的系統(tǒng)需要有以下特點(diǎn):windows友好的用戶界面和系統(tǒng)快速的應(yīng)用方法,簡(jiǎn)單易操作,不需對(duì)使用人員進(jìn)行培訓(xùn),可以使用戶很好的掌握。對(duì)傳輸文件過程中的文件的載入設(shè)置都是非常簡(jiǎn)單可行,比如:如果用戶忘記選擇文件接收者的時(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)單的

26、中小企業(yè)網(wǎng),系統(tǒng)必須做到在實(shí)際應(yīng)用中較為成功。系統(tǒng)應(yīng)為用戶提供windows所一貫堅(jiān)持的非常友好、操作簡(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)高額的資金去購(gòu)買各種移動(dòng)磁盤甚至是通過internet郵件方式,使得用戶方便的同時(shí),也讓信息少走了不少“彎路”。 4)快速準(zhǔn)確性方案:鑒于系統(tǒng)的目標(biāo)要求和特點(diǎn),能夠保證快速準(zhǔn)確地實(shí)現(xiàn)文件共享。綜合上述,本設(shè)計(jì)在windows xp操作系統(tǒng)下,

27、以中文版myeclipse for spring為開發(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ī)密性,能夠在很大程度上有效地提高工作效率。3.2服務(wù)器、客戶器功能介紹3.2.1服務(wù)器功能介紹 本系統(tǒng)服務(wù)器的主要功能是供已登錄用戶獲取其他登錄用戶的ip地址,并不真正參與客戶端雙方的語言交流與文件傳輸,也就是說當(dāng)獲取到要傳送的對(duì)方ip之后,即使服務(wù)器關(guān)閉也不會(huì)影響此時(shí)的雙方,雙方依舊可以交流和傳輸文件;只不過其他用戶要向某人傳輸文

28、件時(shí)不能再簡(jiǎn)單的獲取ip地址了。換句話說當(dāng)已知對(duì)方ip之后即使不登陸服務(wù)器或登陸服務(wù)器失敗照樣也可以完成所有可以完成的操作。服務(wù)器登陸界面如error! reference source not found.。圖3- 1服務(wù)器界面 3.2.2客戶端功能介紹客戶端的程序是整個(gè)系統(tǒng)程序的核心,它提供了與另一端連接到交流、文件傳輸?shù)乃泄δ?。用戶通過客戶端程序登陸到服務(wù)器,從而獲得已登錄用戶列表,選擇要連接的用戶名稱,獲取其ip地址,然后連接,最后與之進(jìn)行交流或傳輸文件。若客戶端因某些原因不能登錄服務(wù)器,那么只要得到對(duì)方ip也照樣可以與對(duì)方通訊。需要注意的是,本系統(tǒng)的連接屬于單向連接,即a用戶連接b

29、用戶之后,a可以對(duì)b進(jìn)行單向信息傳輸,若b需要與與a通訊則b必須再與a連接。用戶登陸界面如圖3- 2登陸之后的客戶端界面如圖3- 3。 圖3- 4客戶端登陸界面圖3- 5客戶端界面4實(shí)現(xiàn)過程分析4.1系統(tǒng)通訊過程流程圖圖4- 1系統(tǒng)通訊過程圖注:圖中箭頭方向表示信息流向。4.2服務(wù)器、客戶端通訊過程設(shè)計(jì)分析4.2.1服務(wù)器端分析服務(wù)器端主要由server.java, serveragentthread.java和serverthread.java三個(gè)類文件組成,完成與用戶連接和監(jiān)聽已登錄用戶的功能。server.java文件主要是創(chuàng)建服務(wù)器的運(yùn)行界面和創(chuàng)建并啟動(dòng)服務(wù)器線程完成把已接收到的登陸的

30、客戶端信息(用戶名和ip地址)顯示在服務(wù)器界面上。下邊是此文件中獲取用戶信息并顯示的函數(shù)。public void refreshlist()/更新在線用戶列表的業(yè)務(wù)處理代碼vector v=new vector();int size=this.onlinelist.size();for(int i=0;isize;i+)/遍歷在線列表serveragentthread tempsat=(serveragentthread)this.onlinelist.get(i);string temps=tempsat.sc.getinetaddress().tostring();temps=temps+

31、-+tempsat.getname()+ 上線;/獲得所需信息v.add(temps);/添加到vector中this.jluseronline.setlistdata(v);/更新列表數(shù)據(jù)serveragentthread.java文件主要功能是獲取套接字,創(chuàng)建輸入輸出流完成與客戶端的具體鏈接和信息交流,即從客戶端獲取用戶信息(包括用戶名和ip地址)加入到用戶列表中并刷新服務(wù)器上用戶列表,同時(shí)把最新用戶名列表發(fā)送給客戶端,此外還要完成客戶端發(fā)來的查找相應(yīng)用戶名的ip地址的請(qǐng)求。兩個(gè)功能的主要函數(shù)如下:public void nick_name(string msg)trystring nam

32、e=msg.substring(13);/獲得用戶的用戶名this.setname(name);/用用戶名稱給該線程取名vector v=father.onlinelist;/獲得在線用戶列表boolean ischongming=false;int size=v.size();/獲得用戶列表的大小for(int i=0;isize;i+)/遍歷列表,查看是否已經(jīng)有該用戶名serveragentthread tempsat=(serveragentthread)v.get(i);if(tempsat.getname().equals(name)ischongming=true;/有重名,將標(biāo)志

33、位設(shè)為truebreak;if(ischongming=true)/如果重名dout.writeutf();/將重名信息發(fā)送給客戶端din.close();/關(guān)閉數(shù)據(jù)輸入流dout.close();/關(guān)閉數(shù)據(jù)輸出流sc.close();/關(guān)閉socketflag=false;/終止該服務(wù)器代理線程else/如果不重名v.add(this);/將該線程添加到在線列表father.refreshlist();/刷新服務(wù)器在線信息列表string nicklistmsg=;size=v.size();/獲得在線列表大小for(int i=0;isize;i+)serveragentthread te

34、mpsat=(serveragentthread)v.get(i);nicklistmsg=nicklistmsg+|+tempsat.getname();/將在線列表內(nèi)容住組織成字符串nicklistmsg=+nicklistmsg;vector tempv=father.onlinelist;size=tempv.size();for(int i=0;isize;i+)/遍歷在線列表serveragentthread sattemp=(serveragentthread)tempv.get(i);sattemp.dout.writeutf(nicklistmsg);/將最新的列表信息發(fā)送到

35、各個(gè)客戶端if(sattemp!=this)/給其他客戶端發(fā)送新用戶上線的信息sattemp.dout.writeutf(+this.getname()+上線了.);catch(ioexception e)e.printstacktrace();public void finduser(string msg)trysystem.out.println(msg:+msg);string name=msg.substring(7,msg.length();/獲得接收方的名字vector v=father.onlinelist;/獲得在線用戶列表int size=v.size();/獲得在線用戶列表

36、的大小for(int i=0;isize;i+)/遍歷列表,搜索接收方serveragentthread sattemp=(serveragentthread)v.get(i);if(sattemp.getname().equals(name)/將該信息轉(zhuǎn)發(fā)給接收方system.out.println(msg:+sattemp.sc.getinetaddress().tostring().substring(1);this.dout.writeutf(+sattemp.sc.getinetaddress().tostring().substring(1);break;catch(ioexcep

37、tion e)e.printstacktrace();4.2.2客戶端分析客戶端主要有clientagentthread.java, receiverthread.java ,filesender.java和qqlogin.java三個(gè)類文件組成,完成與服務(wù)器及其他客戶端連接并通訊的功能。clientagentthread.java文件主要完成與服務(wù)器的連接,向服務(wù)器發(fā)送自己的用戶信息,接受服務(wù)器發(fā)來的用戶名列表和向服務(wù)器發(fā)送獲取特定用戶ip的請(qǐng)求。主要功能函數(shù)如下:public clientagentthread(filesender father)this.father=father;tr

38、ydin=new datainputstream(father.sc.getinputstream();/創(chuàng)建數(shù)據(jù)輸入輸出流dout=new dataoutputstream(father.sc.getoutputstream();string name=father.jtfnickname.gettext().trim();/獲得用戶名dout.writeutf(+name);/發(fā)送用戶名到服務(wù)器catch(exception e)e.printstacktrace();public void run()while(flag)trystring msg=din.readutf().trim(

39、);/獲得服務(wù)器發(fā)來的信息if(msg.startswith()/收到重名的信息_chongming();else if(msg.startswith()/收到用戶名列表this.nick_list(msg);else if(msg.startswith()/當(dāng)收到服務(wù)器離開的信息this.server_down();else if(msg.startswith()/當(dāng)收到服務(wù)器發(fā)來的用戶ip的信息this.set_sendip(msg);catch(exception e)e.printstacktrace();receiverthread.java文件主要完成數(shù)據(jù)的接受與

40、計(jì)算數(shù)據(jù)傳送的時(shí)間。filesender.java文件是此系統(tǒng)最核心的部分,完成客戶端界面設(shè)計(jì)和客戶端之間的連接與通訊(包括文字通訊和文件傳輸)的所有功能功能,并有登陸界面的一些錯(cuò)誤提示功能(如用戶名不能為空等提示),是此系統(tǒng)最核心功能的表述。此文件中清晰表明了此系統(tǒng)的具體通訊過程是與服務(wù)器無關(guān);文件傳輸是以字節(jié)流的方式進(jìn)行的主要函數(shù)如下:5 軟件運(yùn)行測(cè)試圖5.1服務(wù)器運(yùn)行測(cè)試啟動(dòng)服務(wù)器:圖5- 1服務(wù)器界面點(diǎn)擊啟動(dòng)按鈕:圖5- 2啟動(dòng)服務(wù)器提示界面5.2客戶端運(yùn)行測(cè)試啟動(dòng)客戶端并輸入用戶名服務(wù)器的ip:圖5- 3客戶端登陸界面點(diǎn)擊登錄:圖5- 4客戶端正常工作界面再按照前面步驟再啟動(dòng)一個(gè)客戶

41、端,并獲取zsy用戶的ip,之后點(diǎn)擊鏈接并向?qū)Ψ桨l(fā)送字母d:圖5- 5與其它客戶端連接后界面此時(shí)zsy用戶界面:圖5- 6收到zsyzsy信息界面再新建用戶zsyzsy客戶端界面點(diǎn)擊發(fā)送文件:圖5- 7zsyzsy選擇發(fā)送文件界面選中要發(fā)送的文件,之后點(diǎn)擊保存,雙方界面如下:圖5- 8zsyzsy發(fā)送文件界面圖5- 9zsy收到zsyzsy發(fā)送文件請(qǐng)求界面在用戶zsy界面上點(diǎn)擊接受:圖5- 10zsy保存接收文件路徑選擇界面選擇路徑后點(diǎn)擊保存:圖5- 11zsy接收成功界面結(jié)語1.特點(diǎn)本系統(tǒng)最大的特點(diǎn)就是結(jié)構(gòu)簡(jiǎn)單。由于界面清晰、簡(jiǎn)潔、一目了然,從而使用戶使用起來相當(dāng)?shù)姆奖?,而且與interne

42、t上的類似軟件相比,在一些條件上(如網(wǎng)絡(luò)帶寬等)會(huì)更加有利于小型局域網(wǎng)中人們的交流、工作。2.待解決問題本系統(tǒng)還有一個(gè)特點(diǎn)就是可擴(kuò)展性非常強(qiáng)。與原因相對(duì),本系統(tǒng)的簡(jiǎn)單也顯示出了缺點(diǎn)和待解決的問題:文件傳輸部分還存在著一些bug。文件傳輸部分的設(shè)計(jì)不支持?jǐn)帱c(diǎn)續(xù)傳的功能。當(dāng)多個(gè)員工需要共同探討問題或者相互傳送文件時(shí),本系統(tǒng)并不支持此功能。參考文獻(xiàn)1 douglas e.comer.tcp/ip 網(wǎng)絡(luò)互連m.北京:人民郵電出版社,2002.23.2 subrahmanyam allamaraju. java server programming: principles and technologie

43、sm. 北京:機(jī)械工業(yè)出版社,2001,1-23. 3 bruce eckel. java編程思想m.北京:機(jī)械工程出版社, 2003.12-16. 呂鳳翥,馬皓.java語言程序設(shè)計(jì)j.北京:清華大學(xué)出版社.2008.403-409.4 肖新峰,宋強(qiáng),王立新.tcp/ip協(xié)議與網(wǎng)絡(luò)管理j.背景:清華大學(xué)出版社,2009.185-259.5 douglas d.huston.java network programmingm.北京:清華大學(xué)出版社,2004.57.6 朱和平.即時(shí)通信研究綜述j.現(xiàn)代計(jì)算機(jī),2006,(12):55-58.7 劉培鶴,牛曉蕾,杜鵬,何文才,張媛媛.企業(yè)即時(shí)通信系

44、統(tǒng)安全性分析與設(shè)計(jì)j.網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007,(2):59-61.8 張效祥.計(jì)算機(jī)科學(xué)技術(shù)百科全書.北京:清華大學(xué)出版社,1998.34-43.9 馮博,應(yīng)群.面向?qū)ο蟮膉ava網(wǎng)絡(luò)編程m.北京:清華大學(xué)出版社, 2003.20-33.10 蔣東興.windows sockets 網(wǎng)絡(luò)程序設(shè)計(jì)大全m.北京:清華大學(xué)出版社,1999.74.11 趙雙紅,劉壽強(qiáng),潘春華.p2p通信網(wǎng)絡(luò)安全問題探析j.計(jì)算機(jī)安全,2003,(11):6-9.12 david iseminger.網(wǎng)絡(luò)連接服務(wù)開發(fā)人員參考庫(kù)m.北京:機(jī)械工業(yè)出版社,2001.9.13 donald e.knuth. the a

45、rt of computer programmingm. 北京:人民郵電出版社,1998.87.14 薩師煊,王珊著.計(jì)算機(jī)網(wǎng)絡(luò)概論j.電腦信息報(bào),2001.9-23.15 田文雅.程序設(shè)計(jì)j. 計(jì)算機(jī)時(shí)代,2001.9-21.16 bruce eckel. java編程思想m.北京:機(jī)械工程出版社, 2003.12-16.第 29 頁(yè) 共 29 頁(yè)致 謝首先感謝我的導(dǎo)師楊金山,論文從選題、結(jié)構(gòu)安排、文字處理直至最終定稿的全過程無一不是在楊老師的悉心指導(dǎo)、嚴(yán)格要求和親切關(guān)懷下完成的。在本論文完稿之際,謹(jǐn)向所有給予我關(guān)心和幫助的人們致以我最誠(chéng)摯的謝意。我的良師對(duì)本文的寫作給予了極大的支持與精心的

46、指導(dǎo),提出了很多寶貴的論文整改意見,也做了大量的輔助工作,我謹(jǐn)向恩師深表謝意。恩師嚴(yán)謹(jǐn)求實(shí)的學(xué)風(fēng),孜孜不倦的精神,淵博的學(xué)識(shí),深邃的思想,都深深的刻在我的心中,在老師的教導(dǎo)下,我接受了全新的思想觀念,樹立了明確的學(xué)術(shù)目標(biāo),掌握了通用的研究方法。在此,我向幫助指導(dǎo)和培養(yǎng)我的導(dǎo)師致以崇高的敬意和衷心的感謝!我的周圍是一群風(fēng)華正茂的有志青年,他們的求知精神不斷激勵(lì)著我學(xué)習(xí)、鉆研專業(yè)知識(shí)。在完成畢業(yè)論文的過程中很多同學(xué)都給予了我極大的幫助。最后,感謝我的家人和朋友,是你們?cè)谏詈蛯W(xué)習(xí)上給了我巨大的鼓勵(lì)和支持,我的學(xué)業(yè)得以順利完成離不開你們的幫助和照顧。不管過去、現(xiàn)在、還是將來,家人和朋友永遠(yuǎn)是我堅(jiān)強(qiáng)的

47、后盾,也是我努力學(xué)習(xí)和勤奮工作的最大動(dòng)力。附錄2配置及安裝說明配置:網(wǎng)上去下個(gè)jdk,安裝好后,在我的電腦右鍵點(diǎn)開屬性-高級(jí)-環(huán)境變量里面可以設(shè)置jdk安裝,沒有設(shè)置好環(huán)境變量不能正常使用。在系統(tǒng)變量中找到classpath變量,點(diǎn)“編輯”,在原來的內(nèi)容后面先寫個(gè)分號(hào),再寫個(gè)小數(shù)點(diǎn),再寫個(gè)分號(hào),然后再把你安裝的bin文件的路徑寫上去,如c:program filesjavajdk1.6.0_10 bin 這樣就把classpath變量設(shè)置好了。下一步再找到path變量,點(diǎn)“編輯”,也是在原內(nèi)容后面寫上分號(hào)點(diǎn)分號(hào),然后把你安裝的tools.jar文件的路徑寫上去,如c:program files

48、javajdk1.6.0_10libtools.jar 這樣就把path變量也設(shè)置好了,下一步是設(shè)置java_home變量,這個(gè)變量原來沒有,所以得點(diǎn)“新建”,在值中寫入你安裝的jdk的路徑,如c:program filesjavajdk1.6.0_10。安裝: 得到客戶端和服務(wù)器的可執(zhí)行文件后直接雙擊打開即可,無需安裝。附錄2源代碼服務(wù)器:package hsnc;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import

49、 .*;import java.io.*;public class server extends jframe implements actionlistenerjlabel jlport=new jlabel( 工作愉快);/創(chuàng)建提示輸入端口號(hào)標(biāo)簽jlabel jlport1=new jlabel(衡水學(xué)院 祝您);jtextfield jtfport=new jtextfield(7777);/用于輸入端口號(hào)的文本框jbutton jbstart=new jbutton(啟動(dòng));/創(chuàng)建啟動(dòng)按鈕jbutton jbstop=new jbutton(關(guān)閉);/創(chuàng)建關(guān)閉按鈕jpanel jps=

50、new jpanel();/創(chuàng)建一個(gè)jpanel對(duì)象jlist jluseronline=new jlist();/創(chuàng)建用于顯示當(dāng)前用戶的jlistjscrollpane jspx=new jscrollpane(jluseronline);/將顯示當(dāng)前用戶的jlist放在jscrollpane中jsplitpane jspz=new jsplitpane(jsplitpane.horizontal_split,jspx,jps);/創(chuàng)建jsplitpane對(duì)象serversocket ss;/聲明serversocket引用serverthread st;/聲明serverthread引用v

51、ector onlinelist=new vector();/創(chuàng)建存放當(dāng)前在線用戶的vector對(duì)象public server()this.initialcomponent();/初始化控件this.addlistener();/為相應(yīng)的控件注冊(cè)事件監(jiān)聽器this.initialframe();/初始化窗體public void initialcomponent()jps.setlayout(null);/設(shè)為空布局jlport.setbounds(40,180,100,20);jps.add(jlport);jlport1.setbounds(40,150,100,20);jps.add(jlport1);/添加用于提示輸入端口號(hào)的標(biāo)簽this.jtfport.setbounds(85,20,60,20);this.jbstart.setbounds(50,50,80,20);jps.add(this.jbstart);/添加開始按鈕 this.jbstop.setbounds(50,100,80,20);jps.add(this.jbstop);/添加關(guān)閉按鈕this.jbstop.setenabled(false);/將關(guān)閉按鈕

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論