版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、密 級 公 開 學(xué) 號 xx學(xué)院畢業(yè)論文(設(shè)計)基于socket的局域網(wǎng)文件傳輸系統(tǒng) 論文作者指導(dǎo)教師所屬學(xué)院專業(yè)本科??颇昙壵撐奶峤蝗掌谡撐拇疝q日期xxxxxx數(shù)學(xué)與計算機(jī)學(xué)院計算機(jī)科學(xué)與技術(shù)本科2007級2011年5月20日2011年5月 28日 畢業(yè)論文(設(shè)計)學(xué)術(shù)承諾本人鄭重承諾:所呈交的畢業(yè)論文是本人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果.除了文中特別加以標(biāo)注和致謝的地方外,論文中不存在抄襲情況,論文中不包含其他人已經(jīng)發(fā)表的研究成果,也不包含他人或其他教學(xué)機(jī)構(gòu)取得的研究成果.作者簽名: 日 期: 畢業(yè)論文(設(shè)計)使用授權(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ī)科學(xué)與技術(shù)專業(yè)畢業(yè)論文基于socket的局域網(wǎng)文件傳輸系統(tǒng)摘 要:文件傳輸是通過一條網(wǎng)絡(luò)連接從遠(yuǎn)地站點向本地主機(jī)復(fù)制文件。當(dāng)前internet上有著各種文件傳輸文件,例如qq等。但大多數(shù)是需要遠(yuǎn)地服務(wù)器控制的。因此對于一些僅需在局域網(wǎng)內(nèi)部完成的傳輸工作存在著風(fēng)險和資源浪費?;趕ocket的局域網(wǎng)文件傳輸系統(tǒng)是用java語言在myeclipse for spring 8.6環(huán)
3、境下開發(fā)完成的一種適用于局域網(wǎng)的內(nèi)部文件傳輸系統(tǒng)。它具有聊天和文件傳輸兩個功能,可滿足校園網(wǎng)等小范圍內(nèi)的日常工作和學(xué)習(xí)??蛻舳穗p方及服務(wù)器在tcp協(xié)議基礎(chǔ)上建立socket連接之后,客戶端可以從服務(wù)器上獲取其它登陸用戶的用戶名和ip地址等信息,在用戶通訊前彼此的客戶端還應(yīng)該進(jìn)行連接,它們之間的具體通訊過程是不需要通過服務(wù)器的點對點通訊。關(guān)鍵詞:java;點對點;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ù)簡介32.1 myeclipse及myeclipse for spring32.2tcpip協(xié)議簡介42.3基于socket的java網(wǎng)絡(luò)編程技術(shù)介紹42.3.1什么是
8、socket42.3.2socket的運行機(jī)制圖52.3.3如何進(jìn)行socket編程53 設(shè)計方案介紹73.1系統(tǒng)需求分析73.2服務(wù)器、客戶器功能介紹83.2.1服務(wù)器功能介紹83.2.2客戶端功能介紹94實現(xiàn)過程分析114.1系統(tǒng)通訊過程流程圖114.2服務(wù)器、客戶端通訊過程設(shè)計分析114.2.1服務(wù)器端分析114.2.2客戶端分析145 軟件運行測試圖175.1服務(wù)器運行測試175.2客戶端運行測試17結(jié)語22參考文獻(xiàn)23致 謝24附錄2配置及安裝說明25附錄2源代碼26柳亞林:vlan在校園網(wǎng)中的高效應(yīng)用第 ix 頁 共 5 頁07級計算機(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)上的文件傳輸。甚至需要花費大量的金錢購買各種移動磁盤或者其他局域網(wǎng)內(nèi)連接主機(jī)的硬件設(shè)備。而達(dá)到的效果卻總是因為傳輸效率以及安全威脅而受到很大的限制。在這種形勢下,開發(fā)一個功能簡單而實用,能在windows操作系統(tǒng)中運行,并且具有可移植性的局域網(wǎng)內(nèi)文件傳輸工具勢在必行。1.2選題意義隨著網(wǎng)絡(luò)通信技術(shù)的發(fā)展與用戶需求日益多樣化,現(xiàn)代局域網(wǎng)絡(luò)正處在變革與發(fā)展之中,本課題的主要目的之一是為了更清晰地培養(yǎng)學(xué)生掌握科學(xué)研究方法的能力和使學(xué)生迅速體會文件
10、傳輸系統(tǒng)的研發(fā)過程?;诰钟蚓W(wǎng)的文件傳輸系統(tǒng)能夠讓家庭網(wǎng)絡(luò)以及各個企業(yè)等局域網(wǎng)對內(nèi)部資料有一個快捷,準(zhǔn)確,安全的共享。特別是對如今較大系統(tǒng)研發(fā)的模塊分工合作得到了絕對保密性,從而使各項工作有計劃、更科學(xué)的進(jìn)行及順利完成,使企業(yè)的辦事效率得到顯著提高。文件傳輸系統(tǒng)主要功能是自動獲取局域網(wǎng)內(nèi)用戶的主機(jī)名,ip地址以及工作組名字,最終以c/s模式通過tcp/ip協(xié)議實現(xiàn)點到點文件傳輸功能。本系統(tǒng)既鍛煉了我們的實際動手能力,使我們將大學(xué)四年所學(xué)的理論知識與實際開發(fā)相結(jié)合,又引導(dǎo)我們進(jìn)行了一次模擬實際產(chǎn)品的開發(fā),對于我們以后工作能力的培養(yǎng)具有重要的意義。1.3 前人的工作成果目前,國內(nèi)外企業(yè)對局域網(wǎng)的文
11、件傳輸系實踐上都還不夠完善。文件傳輸系統(tǒng)由于比較復(fù)雜,可變因素較多,安全性低,因此發(fā)展還不成熟。但是隨著科學(xué)技術(shù)的發(fā)展,各為中心的資源共享系統(tǒng)也即將進(jìn)入高速發(fā)展期。在國內(nèi),隨著企業(yè)資源管理的規(guī)范化和規(guī)模的不斷擴(kuò)大,企業(yè)的計算機(jī)資源管理將不僅僅停留在依靠硬件或者internet網(wǎng)絡(luò)獲取,而且將會向著安全的內(nèi)部網(wǎng)絡(luò)化資源管理方式邁進(jìn)。在此之前,人們已經(jīng)在網(wǎng)絡(luò)通信這個問題上做了許多的工作,開發(fā)了大量的文檔、程序和應(yīng)用軟件,如richard stevens的unix network programming介紹了在unix操作系統(tǒng)下通過socket實現(xiàn)網(wǎng)絡(luò)通信的基本原理及實現(xiàn)方式,microsoft的w
12、indows sockets api提供了一種快速編程實現(xiàn)socket網(wǎng)絡(luò)通信的機(jī)制。前人的這些工作無疑為我們提供了寶貴的經(jīng)驗和快速的開發(fā)方法以及現(xiàn)成的開發(fā)實例。然而,前人已有的工作成果已經(jīng)無法完全滿足我們的需求,即提供一種基于socket的,易于使用具有高度可定制性的,面向中小企業(yè)內(nèi)部通信需求的局域網(wǎng)通信軟件。1.4 本文的主要工作論文主要針對公司或其他小范圍內(nèi)部局域網(wǎng)落設(shè)計出一種方便使用的、高性能的、并滿足其基本通信需求的局域網(wǎng)文件傳輸系統(tǒng)(包含文件傳輸和聊天部分)??蛻舳伺c服務(wù)器端可以在多種硬件平臺上運行,具有較好好的兼容性能。目前我們將通過在tcp/ip協(xié)議之上建立一個功能簡單的文件傳
13、輸系統(tǒng)(包含文件傳輸和聊天部分), 日后程序功能將可以繼續(xù)擴(kuò)展, 逐步發(fā)展成一個功能比較完整的大型文件傳輸系統(tǒng),例如加上文件續(xù)傳功能,客戶端連接發(fā)展成多對多連接,服務(wù)器增加為客戶深一步服務(wù)(如發(fā)布一些消息)的功能等。2開發(fā)環(huán)境和相關(guān)技術(shù)簡介2.1 myeclipse及myeclipse for springmyeclipse企業(yè)級工作平臺(myeclipse enterprise workbench ,簡稱myeclipse)是對eclipse ide的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和j2ee的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的j2ee集成開發(fā)環(huán)境,包括了
14、完備的編碼、調(diào)試、測試和發(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項目部署服務(wù)6. 數(shù)據(jù)庫服務(wù)7. myeclipse整合幫助對于以上每一種功能上的類別,在eclipse中都有相應(yīng)的功能部件,并通過一系列的插件來實現(xiàn)它們。myeclipse結(jié)構(gòu)上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進(jìn)行單獨的擴(kuò)展和升級。簡單而言,myeclipse是eclipse
15、的插件,也是一款功能強大的j2ee集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以及除錯。而myeclipse for spring是在myeclipse的基礎(chǔ)上,加強了對spring的支持。myeclipse for spring 是myeclipse家族的成員之一,其最大的特點就是提 供了更強悍的針對spring框架的支持。其實在myeclipse 中已經(jīng)提供了針對spring框架的一些支持,集成了spring ide,但是這些對于那些針對spring開發(fā)的開發(fā)者來說或許還不足夠,他們需要的是更強大,更有針對性的開發(fā)工具。由于spring的廣泛使用以及 spring開發(fā)者的呼聲高漲,myeclip
16、se for spring 隨之出現(xiàn)。myeclipse for spring 提供對spring mvc的強大支持功能,針對spring的更專業(yè)的編輯器,以及針對spring項目的項目創(chuàng)建向?qū)У裙δ?,讓spring開發(fā)者可以更輕松的通過 myeclipse for spring 快速創(chuàng)建一個基于spring的應(yīng)用。除此之外myeclipse for spring 8.5也提供了myeclipse 8.5幾乎全部特性支持,這讓myeclipse for spring 比myeclipse幾乎是有過之而無不及。整合ssh有手動的有自動的,要想徹底掌握,建議一個框架一個框架的學(xué)習(xí),學(xué)習(xí)完三個框架自
17、然就會整合了。2.2tcpip協(xié)議簡介tcp/ip(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是網(wǎng)絡(luò)中使用的基本通信協(xié)議。雖然從名字上看tcp/ip包括兩種協(xié)議,即傳輸控制協(xié)議(tcp)和網(wǎng)際協(xié)議(ip),但是tcp/ip實際上是一組協(xié)議4。它是異構(gòu)網(wǎng)絡(luò)互連的通信協(xié)議,通過它可以實現(xiàn)各種異構(gòu)網(wǎng)絡(luò)或異種機(jī)之間的互聯(lián)通信。 tcp/ip已成為當(dāng)今計算機(jī)網(wǎng)絡(luò)最成熟、應(yīng)用最廣的互聯(lián)協(xié)議。internet采用的就是tcp/ip協(xié)議,網(wǎng)絡(luò)上各種各樣的計算機(jī)上只要安裝了tcp/ip協(xié)議,它們之間就能相互通信。運行tcp/ip協(xié)議的網(wǎng)絡(luò)是一種采用包(分組)交換網(wǎng)絡(luò)?;趖cp/ip的參考模型將協(xié)議分成四個層次,它們分別是:網(wǎng)絡(luò)
18、訪問層、網(wǎng)際互連層、傳輸層(主機(jī)到主機(jī))、和應(yīng)用層。應(yīng)用層對應(yīng)于osi參考模型的高層,為用戶提供所需要的各種服務(wù),例如:ftp、telnet、dns、smtp等。傳輸層對應(yīng)于osi參考模型的傳輸層,為應(yīng)用層實體提供端到端的通信功能。該層定義了兩個主要的協(xié)議:傳輸控制協(xié)議(tcp)和用戶數(shù)據(jù)報協(xié)議(udp)。 tcp協(xié)議提供的是一種可靠的、面向連接的數(shù)據(jù)傳輸服務(wù);而udp協(xié)議供的是不可靠的、無連接的數(shù)據(jù)傳輸服務(wù)。網(wǎng)際互聯(lián)層主要解決主機(jī)到主機(jī)的通信問題。該層有四個主要協(xié)議:網(wǎng)際協(xié)議(ip)、地址解析協(xié)議(arp)、互聯(lián)網(wǎng)組管理協(xié)議(igmp)和互聯(lián)網(wǎng)控制報文協(xié)議(icmp)。 ip協(xié)議是網(wǎng)際互聯(lián)層
19、最重要的協(xié)議,它提供的是一個不可靠、無連接的數(shù)據(jù)報傳遞服務(wù)。網(wǎng)絡(luò)訪問層與osi參考模型中的物理層和數(shù)據(jù)鏈路層相對應(yīng)。事實上,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ò)上的兩個程序通過一個雙向的通訊連接實現(xiàn)數(shù)據(jù)的交換,這個雙向鏈路的一端稱為一個socket。socket通常用來實現(xiàn)客戶方和服務(wù)方的連接。socket是tcp/ip協(xié)議的一個十分流行的編程界面,一個socket由一個ip地址和一個端口號唯一確定。但是,socket所
20、支持的協(xié)議種類也不光tcp/ip一種,因此兩者之間是沒有必然聯(lián)系的。在java環(huán)境下,socket編程主要是指基于tcp/ip協(xié)議的網(wǎng)絡(luò)編程2。2.3.2socket的運行機(jī)制圖一般而言,socket大部分應(yīng)用于服務(wù)器與客戶端的連接與通信,本系統(tǒng)雖然有服務(wù)器,但并不實際參與用戶間的交流和文件傳輸,只起到輔助作用,所以在文件傳輸時客戶端與客戶端之間其實是互為服務(wù)器的,圖2- 1是從服務(wù)器與客戶端之間的關(guān)系來描述socket通信機(jī)制。圖2- 2socket通訊機(jī)制2.3.3如何進(jìn)行socket編程java在包中提供了兩個類socket和serversocket,分別用來表示雙向連接的客戶端和服務(wù)端
21、。這是兩個封裝得非常好的類。 首先是socket類,其表示tcp連接的客戶方,代表了通信的一方,常用的構(gòu)造方法有:public socket(ineraddress address,int port) throw ioexception3public socket(string host,int port) throws unknownhostexception,ioexception從上述定義克制,在引用socket構(gòu)造方法是,需要指定兩個參數(shù),即“服務(wù)器”程序所在的ip地址和其監(jiān)聽的端口號。創(chuàng)建對象是若發(fā)生i/o錯誤,則構(gòu)造方法需拋出ioexception異常。上述近視通信的一方即客戶端,
22、若要真正完成通信,還需要相應(yīng)的、能更客戶的請求作出響應(yīng)的服務(wù)器程序.serversocket類是加吧網(wǎng)絡(luò)api中提供的服務(wù)器功能的類,常用構(gòu)造方法為:public serversocket(int port) throws ioexception3該構(gòu)造方法是常見一個serversocket對象,并綁定到所指定的端口上。有了該對象,就可以完成旗艦廳端口和等待連接的功能。3 設(shè)計方案介紹3.1系統(tǒng)需求分析現(xiàn)行業(yè)務(wù)系統(tǒng)描述:目前各種文件資源交流的主要方式可以分為三種:(1)通過局域網(wǎng)內(nèi)主機(jī)之間以文件共享后再經(jīng)過復(fù)制,粘貼方式實現(xiàn)。(2)依靠可移動磁盤的兩次信息轉(zhuǎn)移實現(xiàn)。(3)通過internet郵
23、件方式實現(xiàn)。此三種方法并非不可行,但它們都需要花費較長的時間以及安全性也得不到保證,工作效率將在很大程度上受到限制。如果通過局域網(wǎng)內(nèi)主機(jī)之間復(fù)制粘貼來實現(xiàn)文件資源共享,將浪費大量的網(wǎng)絡(luò)帶寬,極大程度上影響了網(wǎng)內(nèi)用戶的工作效率,甚至導(dǎo)致用戶不能正常工作;如果依靠移動磁盤實現(xiàn)文件的共享,將花費大量的金錢,而文件較大移動磁盤容量不足的情況下會令人極為頭疼,何況移動磁盤是病毒傳播的重要途徑;如果通過internet郵件方式實現(xiàn),用戶需要接入internet服務(wù)器,這種方式對遠(yuǎn)程服務(wù)器有非常大的依賴性,即使1kb的文件都要經(jīng)歷極度繁瑣的路徑,不能徹底實現(xiàn)點對點的即時交流,文件較大的情況下就不言而喻了。最
24、重要的是,在如今病毒黑客橫行的網(wǎng)絡(luò)世界中,信息的安全性也得不到保證。綜上所述,依靠internet網(wǎng)絡(luò)等方式實現(xiàn)文件資源交互的準(zhǔn)確性,快速性及安全性遠(yuǎn)達(dá)不到理想的要求。現(xiàn)行系統(tǒng)存在的主要問題分析:針對企業(yè)來說,提高工作效率是企業(yè)的一個重心;降低成本是企業(yè)贏取最大利益的重要方式;保證信息安全卻是可能影響企業(yè)生死存亡的關(guān)鍵。企業(yè)需要對各種因素有足夠深刻的認(rèn)識才可能實現(xiàn)最終目標(biāo)-盈利。而傳統(tǒng)的文件資源交互方式卻存在很多的問題,大致可以分為:一、不能有效地降低文件交互成本;二、文件交換過程過于繁瑣;三、內(nèi)部機(jī)密資料得不到安全保證;四、文件交互的準(zhǔn)確性得不到更本保證。解決方案:解決當(dāng)前問題的方案主要是指
25、在允許的成本、性能要求下,分析系統(tǒng)實施的可行性,提出功能實現(xiàn)的依據(jù),包括其簡單性,安全性以及經(jīng)濟(jì)可行性。根據(jù)企業(yè)簡單快速,安全的資源共享等要求,提出以下四種解決方案:1)操作簡單性方案:開發(fā)的系統(tǒng)需要有以下特點:windows友好的用戶界面和系統(tǒng)快速的應(yīng)用方法,簡單易操作,不需對使用人員進(jìn)行培訓(xùn),可以使用戶很好的掌握。對傳輸文件過程中的文件的載入設(shè)置都是非常簡單可行,比如:如果用戶忘記選擇文件接收者的時候系統(tǒng)會自動提示“請選擇接收用戶”要求用戶選擇主機(jī)而不導(dǎo)致錯誤出現(xiàn)而引發(fā)的不便,這樣就大大提高工作效率。而且開發(fā)的系統(tǒng)應(yīng)該簡單易操作,易維護(hù),減少了不必要的麻煩。對于家庭局域網(wǎng)以及一些比較簡單的
26、中小企業(yè)網(wǎng),系統(tǒng)必須做到在實際應(yīng)用中較為成功。系統(tǒng)應(yīng)為用戶提供windows所一貫堅持的非常友好、操作簡單的用戶界面。2)傳輸安全性方案:系統(tǒng)開發(fā)完成后,能有效地使內(nèi)部資源與外網(wǎng)的完全隔離,從而保證了內(nèi)部機(jī)密文件的安全性。3)經(jīng)濟(jì)可行性方案:系統(tǒng)開發(fā)完成必須作到提高文件共享效率,不管是在資金上還是效率上都能達(dá)到預(yù)期的效果的。最重要的一點就是:使用戶避免花費高額的資金去購買各種移動磁盤甚至是通過internet郵件方式,使得用戶方便的同時,也讓信息少走了不少“彎路”。 4)快速準(zhǔn)確性方案:鑒于系統(tǒng)的目標(biāo)要求和特點,能夠保證快速準(zhǔn)確地實現(xiàn)文件共享。綜合上述,本設(shè)計在windows xp操作系統(tǒng)下,
27、以中文版myeclipse for spring為開發(fā)工具,以c/s為系統(tǒng)功能結(jié)構(gòu),基于點對點的tcp/ip協(xié)議理論,通過socket套節(jié)字連接客戶端與服務(wù)器實現(xiàn)文件及文件夾傳輸。徹底避免了文件交換過程與外部網(wǎng)絡(luò)的接觸,實現(xiàn)快速的文件資源共享。并能夠確保內(nèi)部文件的機(jī)密性,能夠在很大程度上有效地提高工作效率。3.2服務(wù)器、客戶器功能介紹3.2.1服務(wù)器功能介紹 本系統(tǒng)服務(wù)器的主要功能是供已登錄用戶獲取其他登錄用戶的ip地址,并不真正參與客戶端雙方的語言交流與文件傳輸,也就是說當(dāng)獲取到要傳送的對方ip之后,即使服務(wù)器關(guān)閉也不會影響此時的雙方,雙方依舊可以交流和傳輸文件;只不過其他用戶要向某人傳輸文
28、件時不能再簡單的獲取ip地址了。換句話說當(dāng)已知對方ip之后即使不登陸服務(wù)器或登陸服務(wù)器失敗照樣也可以完成所有可以完成的操作。服務(wù)器登陸界面如error! reference source not found.。圖3- 1服務(wù)器界面 3.2.2客戶端功能介紹客戶端的程序是整個系統(tǒng)程序的核心,它提供了與另一端連接到交流、文件傳輸?shù)乃泄δ?。用戶通過客戶端程序登陸到服務(wù)器,從而獲得已登錄用戶列表,選擇要連接的用戶名稱,獲取其ip地址,然后連接,最后與之進(jìn)行交流或傳輸文件。若客戶端因某些原因不能登錄服務(wù)器,那么只要得到對方ip也照樣可以與對方通訊。需要注意的是,本系統(tǒng)的連接屬于單向連接,即a用戶連接b
29、用戶之后,a可以對b進(jìn)行單向信息傳輸,若b需要與與a通訊則b必須再與a連接。用戶登陸界面如圖3- 2登陸之后的客戶端界面如圖3- 3。 圖3- 4客戶端登陸界面圖3- 5客戶端界面4實現(xiàn)過程分析4.1系統(tǒng)通訊過程流程圖圖4- 1系統(tǒng)通訊過程圖注:圖中箭頭方向表示信息流向。4.2服務(wù)器、客戶端通訊過程設(shè)計分析4.2.1服務(wù)器端分析服務(wù)器端主要由server.java, serveragentthread.java和serverthread.java三個類文件組成,完成與用戶連接和監(jiān)聽已登錄用戶的功能。server.java文件主要是創(chuàng)建服務(wù)器的運行界面和創(chuà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ù)器上用戶列表,同時把最新用戶名列表發(fā)送給客戶端,此外還要完成客戶端發(fā)來的查找相應(yīng)用戶名的ip地址的請求。兩個功能的主要函數(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、各個客戶端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三個類文件組成,完成與服務(wù)器及其他客戶端連接并通訊的功能。clientagentthread.java文件主要完成與服務(wù)器的連接,向服務(wù)器發(fā)送自己的用戶信息,接受服務(wù)器發(fā)來的用戶名列表和向服務(wù)器發(fā)送獲取特定用戶ip的請求。主要功能函數(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、計算數(shù)據(jù)傳送的時間。filesender.java文件是此系統(tǒng)最核心的部分,完成客戶端界面設(shè)計和客戶端之間的連接與通訊(包括文字通訊和文件傳輸)的所有功能功能,并有登陸界面的一些錯誤提示功能(如用戶名不能為空等提示),是此系統(tǒng)最核心功能的表述。此文件中清晰表明了此系統(tǒng)的具體通訊過程是與服務(wù)器無關(guān);文件傳輸是以字節(jié)流的方式進(jìn)行的主要函數(shù)如下:5 軟件運行測試圖5.1服務(wù)器運行測試啟動服務(wù)器:圖5- 1服務(wù)器界面點擊啟動按鈕:圖5- 2啟動服務(wù)器提示界面5.2客戶端運行測試啟動客戶端并輸入用戶名服務(wù)器的ip:圖5- 3客戶端登陸界面點擊登錄:圖5- 4客戶端正常工作界面再按照前面步驟再啟動一個客戶
41、端,并獲取zsy用戶的ip,之后點擊鏈接并向?qū)Ψ桨l(fā)送字母d:圖5- 5與其它客戶端連接后界面此時zsy用戶界面:圖5- 6收到zsyzsy信息界面再新建用戶zsyzsy客戶端界面點擊發(fā)送文件:圖5- 7zsyzsy選擇發(fā)送文件界面選中要發(fā)送的文件,之后點擊保存,雙方界面如下:圖5- 8zsyzsy發(fā)送文件界面圖5- 9zsy收到zsyzsy發(fā)送文件請求界面在用戶zsy界面上點擊接受:圖5- 10zsy保存接收文件路徑選擇界面選擇路徑后點擊保存:圖5- 11zsy接收成功界面結(jié)語1.特點本系統(tǒng)最大的特點就是結(jié)構(gòu)簡單。由于界面清晰、簡潔、一目了然,從而使用戶使用起來相當(dāng)?shù)姆奖悖遗cinterne
42、t上的類似軟件相比,在一些條件上(如網(wǎng)絡(luò)帶寬等)會更加有利于小型局域網(wǎng)中人們的交流、工作。2.待解決問題本系統(tǒng)還有一個特點就是可擴(kuò)展性非常強。與原因相對,本系統(tǒng)的簡單也顯示出了缺點和待解決的問題:文件傳輸部分還存在著一些bug。文件傳輸部分的設(shè)計不支持?jǐn)帱c續(xù)傳的功能。當(dāng)多個員工需要共同探討問題或者相互傳送文件時,本系統(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.北京:清華大學(xué)出版社.2008.403-409.4 肖新峰,宋強,王立新.tcp/ip協(xié)議與網(wǎng)絡(luò)管理j.背景:清華大學(xué)出版社,2009.185-259.5 douglas d.huston.java network programmingm.北京:清華大學(xué)出版社,2004.57.6 朱和平.即時通信研究綜述j.現(xiàn)代計算機(jī),2006,(12):55-58.7 劉培鶴,牛曉蕾,杜鵬,何文才,張媛媛.企業(yè)即時通信系
44、統(tǒng)安全性分析與設(shè)計j.網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007,(2):59-61.8 張效祥.計算機(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è)計大全m.北京:清華大學(xué)出版社,1999.74.11 趙雙紅,劉壽強,潘春華.p2p通信網(wǎng)絡(luò)安全問題探析j.計算機(jī)安全,2003,(11):6-9.12 david iseminger.網(wǎng)絡(luò)連接服務(wù)開發(fā)人員參考庫m.北京:機(jī)械工業(yè)出版社,2001.9.13 donald e.knuth. the a
45、rt of computer programmingm. 北京:人民郵電出版社,1998.87.14 薩師煊,王珊著.計算機(jī)網(wǎng)絡(luò)概論j.電腦信息報,2001.9-23.15 田文雅.程序設(shè)計j. 計算機(jī)時代,2001.9-21.16 bruce eckel. java編程思想m.北京:機(jī)械工程出版社, 2003.12-16.第 29 頁 共 29 頁致 謝首先感謝我的導(dǎo)師楊金山,論文從選題、結(jié)構(gòu)安排、文字處理直至最終定稿的全過程無一不是在楊老師的悉心指導(dǎo)、嚴(yán)格要求和親切關(guān)懷下完成的。在本論文完稿之際,謹(jǐn)向所有給予我關(guān)心和幫助的人們致以我最誠摯的謝意。我的良師對本文的寫作給予了極大的支持與精心的
46、指導(dǎo),提出了很多寶貴的論文整改意見,也做了大量的輔助工作,我謹(jǐn)向恩師深表謝意。恩師嚴(yán)謹(jǐn)求實的學(xué)風(fēng),孜孜不倦的精神,淵博的學(xué)識,深邃的思想,都深深的刻在我的心中,在老師的教導(dǎo)下,我接受了全新的思想觀念,樹立了明確的學(xué)術(shù)目標(biāo),掌握了通用的研究方法。在此,我向幫助指導(dǎo)和培養(yǎng)我的導(dǎo)師致以崇高的敬意和衷心的感謝!我的周圍是一群風(fēng)華正茂的有志青年,他們的求知精神不斷激勵著我學(xué)習(xí)、鉆研專業(yè)知識。在完成畢業(yè)論文的過程中很多同學(xué)都給予了我極大的幫助。最后,感謝我的家人和朋友,是你們在生活和學(xué)習(xí)上給了我巨大的鼓勵和支持,我的學(xué)業(yè)得以順利完成離不開你們的幫助和照顧。不管過去、現(xiàn)在、還是將來,家人和朋友永遠(yuǎn)是我堅強的
47、后盾,也是我努力學(xué)習(xí)和勤奮工作的最大動力。附錄2配置及安裝說明配置:網(wǎng)上去下個jdk,安裝好后,在我的電腦右鍵點開屬性-高級-環(huán)境變量里面可以設(shè)置jdk安裝,沒有設(shè)置好環(huán)境變量不能正常使用。在系統(tǒng)變量中找到classpath變量,點“編輯”,在原來的內(nèi)容后面先寫個分號,再寫個小數(shù)點,再寫個分號,然后再把你安裝的bin文件的路徑寫上去,如c:program filesjavajdk1.6.0_10 bin 這樣就把classpath變量設(shè)置好了。下一步再找到path變量,點“編輯”,也是在原內(nèi)容后面寫上分號點分號,然后把你安裝的tools.jar文件的路徑寫上去,如c:program files
48、javajdk1.6.0_10libtools.jar 這樣就把path變量也設(shè)置好了,下一步是設(shè)置java_home變量,這個變量原來沒有,所以得點“新建”,在值中寫入你安裝的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)建提示輸入端口號標(biāo)簽jlabel jlport1=new jlabel(衡水學(xué)院 祝您);jtextfield jtfport=new jtextfield(7777);/用于輸入端口號的文本框jbutton jbstart=new jbutton(啟動);/創(chuàng)建啟動按鈕jbutton jbstop=new jbutton(關(guān)閉);/創(chuàng)建關(guān)閉按鈕jpanel jps=
50、new jpanel();/創(chuàng)建一個jpanel對象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對象serversocket ss;/聲明serversocket引用serverthread st;/聲明serverthread引用v
51、ector onlinelist=new vector();/創(chuàng)建存放當(dāng)前在線用戶的vector對象public server()this.initialcomponent();/初始化控件this.addlistener();/為相應(yīng)的控件注冊事件監(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);/添加用于提示輸入端口號的標(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《養(yǎng)成好習(xí)慣》教案創(chuàng)新
- 《鐵杵成針》創(chuàng)新教學(xué)策略
- 2HAZOP分析及風(fēng)險評估課件:2024年專業(yè)版
- 初三上冊化學(xué)第十單元酸和堿測試題及答案
- 產(chǎn)房護(hù)理質(zhì)量評價標(biāo)準(zhǔn)
- 2024年教育改革:《生理學(xué)》電子教案在混合式教學(xué)中的應(yīng)用
- 2024年環(huán)境科學(xué):《蜜蜂》課件
- 護(hù)士法律法規(guī)培訓(xùn)
- 防治雞法氏囊病的中草藥配方
- 2024-2025學(xué)年高中數(shù)學(xué)第二章平面向量2.2.2向量減法運算及其幾何意義訓(xùn)練含解析新人教A版必修4
- 漢字演變500例(中)
- 地下車庫頂板加固專項施工方案
- 領(lǐng)導(dǎo)干部政治品德建設(shè)的價值意蘊PPT德才兼?zhèn)湟缘抡頌檎缘翽PT課件(帶內(nèi)容)
- 希臘神話-大力神-赫拉克勒斯
- 軍隊文職招聘(數(shù)學(xué)2+物理)近年考試真題題庫(含真題、典型題匯總)
- 結(jié)構(gòu)加固改造施工方案
- 《診斷學(xué)》心臟聽診
- 咽鼓管異常開放課件
- 部編版高中語文必修下冊整本書閱讀《紅樓夢》課件
- GB/T 4358-1995重要用途碳素彈簧鋼絲
- GB/T 31422-2015個體防護(hù)裝備護(hù)聽器的通用技術(shù)條件
評論
0/150
提交評論