趙娟
[摘要]文章論述了一個基于CS(客戶服務器)模型的簡單文件傳輸系統的設計與開發。系統從功能上分為客戶端和服務器兩部分,客戶端和服務器之間的通信是通過Socket套接字流來實現。實現的功能分別是:文件的上傳及下載;網絡傳輸部分主要實現服務器和客戶端的連接建立、握手通信協議通信、文件列表的傳輸。
[關鍵詞]Java;客戶/服務器模型;文件傳輸;Socket
[DOI]1013939/jcnkizgsc201550242
1引言
21世紀是網絡的時代,是信息的時代,是多媒體的時代?;ヂ摼W技術的迅猛發展與普及,推動了世界范圍的信息傳輸和信息交流。文件傳輸是互聯網上使用較多的服務之一,用戶可以通過與互聯網相連的計算機,從互聯網獲得自己需要的文件?,F在,已經有許多互聯網站點都建立了可供大眾訪問的資料庫,這些資料都可以通過一定的數據傳輸協議被用戶獲取。目前已有FTP、Socket、P2P等多種網絡數據傳輸通信協議,并產生了像CuteFTP、Flashget、迅雷等一批優秀的文件傳輸軟件。但是使用FTP、P2P協議進行文件傳輸需要服務器端進行復雜的配置或者運行特殊的軟件才能進行,Socket是基于客戶/服務器模型的TCP/IP網絡通信協議,它只需通過一個IP地址和端口號就可以在服務器和客戶程序之間建立穩定的數據傳輸通道,操作和配置都比較簡單。
2Socket工作原理
Socket是計算機進行通信的端口,是TCP協議應用程序設計中的一個重要概念。我們建立的網絡通信程序實際上可以看作不同機器中的不同的兩個應用程序之間的通信,收發傳遞信息我們必須知道對方的準確位置。
Socket通信機制提供了兩種通信方式:有連接方式和無連接方式,分別面向不同的應用需求。使用有連接方式,通信鏈路提供了可靠的全雙工的字節流服務,在該方式下,通信雙方必須創建一個連接過程并建立一條通信鏈路,以后的網絡通信操作完全在這一對進程之間進行,通信完畢關閉此連接過程。使用無連接方式時,其系統開銷比連接方式要小,但通信鏈路提供了不可靠的數據服務,不能保證信源所傳輸的數據一定能到達信宿,在該方式下,通信雙方不必建立一個連接過程和一條通信鏈路,網絡操作在不同的主機和進程之間轉發進行。
圖1Socket通信的原理
3文件傳輸系統的設計與實現
Java的Socket支持類:Socket和ServerSocket類庫位于javanet包中,ServerSocket用于服務器端,Socket是建立網絡連接時使用的。在連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成所需的會話。對于一個網絡連接來說,套接字是平等的,并沒有差別,不因為在服務器端或在客戶端而產生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。
服務器端功能模塊主要在類Host Servers里定義,它實現了本系統服務器的大部分功能;客戶端功能模塊主要在類Custom Servers里定義,實現了客戶端的多數功能;客戶端和服務器端公共模塊,如文件的收發、服務狀態的設置等,則放在它們的父類AbstractNetServers中作實現,以提高代碼的復用性。
用戶界面部分目的是實現用戶界面元素的組織及對用戶界面元素的事件處理,調用網絡傳輸相關部分,實現文件的上傳及下載。用戶界面部分根據顯示內容可以分為:主窗口、菜單和工具欄、用戶面板(主要是根據客戶端和服務器端不同,顯示不同的用戶界面組件內容)及文件列表顯示幾個部分,這幾個部分的內容都使用J2SE標準GUI庫Swing組件包的控件實現。
系統的GUI部分分為3個模塊:菜單和工具欄模塊、模式選擇模塊和文件列表顯示模塊,以及一個啟動類Main Frame。Main Frame類是整個程序的入口類,其中包含了Java啟動的main方法。在這類中主要是底層用戶窗口框架的初始化。菜單和工具欄模塊功能主要是在類Menu And Toolbar類里實現。這個類里按照Swing添加菜單和工具欄的方法,對程序的菜單欄和工具欄進行初始化,并添加菜單欄和工具欄控件的事件監聽器和實現相應事件的處理方法。文件列表顯示模塊主要功能都在類File Tree Panel中,主要是用來顯示本機的文件系統結構和服務器共享目錄的文件結構,供用戶作一些選擇操作。
整個系統的體系結構如圖2所示:
4結論
本文討論了使用Java的Socket接口開發一個簡單文件傳輸系統的設計與實現,在一個程序內對系統的客戶端和服務器端進行開發,最終實現了文件的上傳、下載,文件列表的網絡傳輸等一個文件傳輸系統的基本功能,并且同時實現了客戶端和服務器端在運行時的動態切換。系統在開發過程中還有一些不足,希望在以后更加完善。
參考文獻:
[1]謝安明,邵美珍使用Socket設計網絡通訊程序[J].信息工程大學學報,2001(1):156-158
[2]何進,謝松巍基于Socket的TCP/IP網絡通訊模式研究[J].計算機應用研究,2001(8):123-125
[3]曾雅琳,郭斌基于Java的GUI設計與實現[J].計算機與現代化,2005(10):213-214
[4]張云鵬,楊景常基于TCP/IP協議的單片機系統以太網通訊設計與實現[J].西華大學學報(自然科學版),2004(S1):234-238