邢星
摘要:隨著計算機網絡在教學工作中的更加廣泛的應用,網絡機房教學輔助軟件必不可少。基于Java程序語言在跨平臺、安全性、多線程、網絡Socket編程等方面具有獨特的優勢,成為開發校內教學網絡通訊軟件的首選平臺之一。本文介紹了一個基于Java虛擬機的可實現跨平臺特性的校內教學網絡通訊軟件的必要性、可行性及其設計與實現。
關鍵詞:Java 網絡通訊
中圖分類號:G64 文獻標識碼:A 文章編號:1672-3791(2012)10(b)-0165-01
1 背景與現狀
在計算機網絡應用越來越多的今天,教學工作中對網絡的依賴越來越多。尤其是在許多課程設計都會安排上機實踐的今天,在網絡教學中一個局域網內即時通訊教學軟件就必不可少了。
基于客戶端/服務器模式的內網通訊系統,適用于使用者不多,安全性要求較高的情況。基于Java架構開發的網絡通信程序具有跨平臺、跨系統應用的先天優勢。
大多數以盈利為目的的即時通訊軟件,服務器端源代碼是不公開的。這使我們在享受已有的便捷服務的同時,必然損失一定的軟件使用自由度。尤其是當學校有特殊的教學要求,需要添加相應模塊組件時,我們無法在現有軟件的基礎上加以修改。
在教育教學活動中需要一種有學科教學特色,能夠滿足教學工作需要的即時網絡通訊系統,便于上機課時學生與教師、同學之間互相溝通聯系,方便教師布置作業、批改作業和學生提交作業、學習交流。
該系統預期可以實現在機房上機課教學時,在用戶登錄后,教師機與學生機之間的通訊,學生機之間的通訊,各主機之間文件的傳輸。并可以發送留言和郵件,且能將關鍵數據存入數據庫中長期保存。
2 軟件系統設計
網絡通訊軟件的目的就是指直接或間接地通過網絡協議與其他計算機進行通訊。網絡編程中有兩個主要問題:一個是如何準確的定位指定網絡上一臺或多臺主機;另一個是找到主機后如何進行可靠高效的數據傳輸。
這兩個問題可以通過以下方式加以解決:在TCP/IP協議中,IP層主要負責網絡主機的定位及數據傳輸的路由,由IP地址可以唯一地確定網絡中的一臺主機。而TCP層則提供面向應用的可靠的或非可靠的數據傳輸機制,這是網絡編程的主要對象,一般不需要關心IP層是如何處理數據的。
目前較為流行的網絡編程模型是客戶端/服務器(C/S)結構。即設計兩套不同的應用程序作為通信雙方:教師端作為服務器,等待學生提出連接請求并予以響應;學生端則作為客戶端,在需要連接時登錄服務器,并建立連接。教師端一般作為守護進程始終運行,實時監聽網絡端口,一旦有學生提出連接請求,就會啟動一個服務進程來響應該學生端,同時自己繼續監聽服務端口,使后來的學生也能及時登錄連接,得到服務。
2.1網絡模型結構設計
校內教學計算機網絡即時通訊系統采用C/S結構模型。用戶通過學生端連接登陸到教師端,教師端服務器將學生客戶端之間的聊天信息進行轉發或者廣播,即一方先將消息通過TCP連接發送至服務器,服務器再通過TCP連接將消息轉發到另一方。當然,教師也可以直接向某學生發送消息或者向全體學生廣播消息。其他的功能如文件傳輸,圖片、語言的轉發都是建立在這個結構上的。
2.2教師端設計
教師端作為服務器端要求為學生客戶端提供注冊、登錄服務,聊天服務管理,群發廣播信息,共享文件,建立語音通訊中介服務,以及簡單的數據庫管理和參數設置。
2.3學生端設計
根據系統的要求,學生客戶端應具備以下幾個功能:即時通信、語音通信、文件傳輸、好友管理、賬戶管理等,并可完成點名簽到功能。
2.4數據庫設計
該教學網絡通訊系統是以Access作為后臺數據庫,建立多個數據庫表:admin表用于存儲管理員信息,teacher表為教師的基本信息表,包括用戶名、密碼、昵稱、圖片等,student表類似于teacher表,用于存儲學生信息,chatinfo表則用于存儲通訊記錄。
3 軟件系統實現
3.1系統的開發環境
本系統在Windows7操作系統下采用Eclipse3.2開發環境進行開發,在Java平臺下進行GUI圖形界面設計,并通過JavaSocket編程以及多線程技術完成網絡通信,并采用較為簡潔實用的Access數據庫來滿足數據存儲方面需求。
3.2系統主要功能實現
它采用客戶端/服務器模式,由教師服務器端先建立自己的半相關連接,即建立ServerSocket對象,并將ServerSocket對應到某個指定端口port上,并進入監聽狀態,循環監聽是否有與自己端口port相對應的連接請求。
連接是學生客戶端發起的。學生端登錄后,建立自己的半相關連接,然后向指定IP地址的教師端的對應端口port發起連接請求,教師端在檢測到連接請求后,建立Socket連接,并將已經連上的學生端的Socket信息存入臨時的哈希表Hashtable對象中,此時就建立起來一個完整的連接。當學生端離線后(如關閉學生端、死機、下課等情況),則連接斷開,教師端實時的從哈希表Hashtable對象中剔除該Socket連接記錄,并更新在線學生人數。
學生端發送服務內容請求:讀取教師端主機時間,教師端服務器模擬主機提供標準時間服務,以一個線程組輪流響應每個哈希表內的學生端發送的請求,從而實現網絡通訊。
Java提供了ServerSocket類,它是用于服務器端的標準TCP套接字編程對象,可以用它來創建服務器套接字,并將其指定到某個端口。具體使用方法只要生成該類的對象即可,如:ServerSocketserver=newServerSocket(1024);其中1024是指定的端口號。
而Socket類則可以用于客戶端,用于指定服務器端的IP地址和端口號,具體方法類似于ServerSocket對象,如:Socketsocket=newSocket(172.16.168.8,1024);其中172.16.168.8是教師端的IP地址,1024是指定端口號。
參考文獻
[1] 明日科技,李鐘尉,陳丹丹.Java項目開發案例全程實錄[M].2版.北京:清華大學出版社,2011:55-56.
[2] 劉玉,胡暉,仇賓.基于Java多線程的聊天室程序[J].電腦學習,2010(21):20-22.
[3] 李秀廣.文件加密傳輸系統的設計與JAVA實現[J].科技創新導報,2010(26):31.