資源描述:
《網(wǎng)絡(luò)編程課程設(shè)計-java聊天室》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、19網(wǎng)絡(luò)編程課程設(shè)計報告題目:簡單聊天室設(shè)計院系:專業(yè)班級:學號:學生姓名:指導教師:2016年1月6日191.引言1)本課題的來源隨著網(wǎng)絡(luò)普及和上網(wǎng)人數(shù)的大增,在國內(nèi)各大門戶網(wǎng)站都架設(shè)了大型聊天室。如:新浪聊天室、中華網(wǎng)社區(qū)聊天室、搜狐等都成為網(wǎng)民們的熱門聊天室。以新浪聊天室為例看,聊天室呈現(xiàn)積聚人氣作用,并開設(shè)不同主題的聊天室以使網(wǎng)民們具有針對性的使用聊天室。本人計劃設(shè)計一個實現(xiàn)基于Java語言的聊天室的Windows網(wǎng)絡(luò)編程,啟動服務(wù)器后,客戶端運行,向服務(wù)器端發(fā)出請求,連接成功后,會彈出一個聊天室的界面,該界面有
2、私聊(可加入生動的表情描述)、群聊、發(fā)送文件等功能,客戶可以根據(jù)自己的需要選擇不同的功能。具體任務(wù)是實現(xiàn)文件的接收功能,啟動服務(wù)器監(jiān)聽后,接收客戶端發(fā)來請求,安排線程接收對方發(fā)來的文件(例如文檔、照片、音樂、電影等)并存入指定的文件夾中。2)本系統(tǒng)涉及的知識點1、套接字Socket的建立、連接、關(guān)閉,客戶端和服務(wù)器端的輸入/輸出流的連接。2、Java中的多線程及線程的常用方法、Runnable接口。3、基于SWING的圖形用戶界面設(shè)計:布局設(shè)計、文本組件、按鈕與標簽組件、列表組件等。4、InetAddress類。5、輸入
3、/輸出流:文件、文件字節(jié)流、文件字符流、緩沖流、數(shù)據(jù)流。3)功能要求(1)在服務(wù)器端和客戶端分別創(chuàng)建一個套接字對象,通過輸入輸出流連接在一起。套接字調(diào)用close()方法關(guān)閉雙方的套接字連接。(2)使用多線程處理套接字連接,把服務(wù)器端或客戶端讀取的數(shù)據(jù)放在一個單獨的線程中去進行,防止服務(wù)器端或客戶端讀取數(shù)據(jù)可能引起的堵塞。服務(wù)器端收到一個客戶的套接字后,應(yīng)該啟動一個專門為該客戶服務(wù)的線程。(3)成功連接后,在圖形界面中用戶可以根據(jù)自己的需要進行不同的操作,如:群聊天、和某一個用戶單獨聊天(可加入生動的表情描述)、發(fā)送文件
4、等。在界面中會顯示用戶的聊天記錄。194)開發(fā)環(huán)境的選擇在進行開發(fā)之前,首先決定的第一個問題就是,該使用什么開發(fā)環(huán)境來編寫該系統(tǒng)?以目前常用的開發(fā)語言來講有C/C++、.NET技術(shù),JAVA、VisualBasic幾種。還有Eclipse,、BorlandJBuilder等,這些并不是程序語言,而是程序語言在建構(gòu)程序時的“集成開發(fā)工具”,不過它們在開發(fā)設(shè)計的過程中也占有相當重要的角色,因為選用正確的集成開發(fā)工具,可以加速程序設(shè)計的進行、測試與排錯,因而對整體進度具有決定性的影響?;谝韵聨c,選擇JAVA語言開發(fā)技術(shù)。1
5、、就執(zhí)行平臺而言,必須考慮的問題之一是用戶可能使用的操作系統(tǒng)。用戶可能使用的是WindowsLinux。JAVA語言具有平臺無關(guān)性,可以不需要任何修改就可以運行在支持JAVA的任何計算機上。2、JAVA的Swing組件開發(fā)技術(shù)可以開發(fā)豐富的圖形界面,并且SwingAPI類提供了豐富的外部接口和方法,可以方便實現(xiàn)系統(tǒng)功能。3、就項目開發(fā)而言,純粹的面向?qū)ο?,加上?shù)量巨大的類所提供的方法(函數(shù))庫的支持,使得利用Java開發(fā)各種應(yīng)用程序,可以說是易如反掌。此外,在程序除錯、修改、升級和增加新功能等方面,因其面向?qū)ο蟮奶匦?,?/p>
6、得這些維護也變得非常容易。4、Java支持內(nèi)在的多線程運行,提供分布式的并發(fā)機制,運行效率高。5、異常處理,為了使Java程式更穩(wěn)定、更安全,Java引入了異常處理機制。能夠在程序中產(chǎn)生異常情況的地方,執(zhí)行相對應(yīng)的處理,不至于因突發(fā)或意外的錯誤造成執(zhí)行中斷或是死機。通過這種異常處理,不僅能夠清晰地掌握整個程序執(zhí)行的流程,也使得程序的設(shè)計更為嚴謹。6、高性能,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鐘內(nèi)可調(diào)用300,000個過程。翻譯目標代碼的速度與C/C++的性能沒什么區(qū)別。7、網(wǎng)絡(luò)功能,
7、Java可以說是借助因特網(wǎng)而重獲新生的,自然具備編寫網(wǎng)絡(luò)功能的程序。不論是一般因特網(wǎng)/局域網(wǎng)的程序,如Socket、Email、基于Web服務(wù)器的Servlet、JSP程序,甚至連分布式網(wǎng)絡(luò)程序,如CORBA、RMI等的19支持也是非常豐富的,使用起來也很方便。5)開發(fā)技術(shù)的選擇本課題選擇了javaSocket技術(shù)開發(fā)網(wǎng)絡(luò)聊天室。什么是socket?socket是一種用于表達兩臺機器之間連接“終端”的軟件抽象。對于一個給定的連接,在每臺機器上都有一個socket,你可以想象一個虛擬的"管道"工作在兩臺機器之間,“管道”連
8、在兩臺機器的socket上。當然,物理硬件和兩臺機器之間的“管道”這些連接裝置都是未知的,抽象的所有目的就是為了讓我們不必了解更多的細節(jié)。簡單的說,一臺計算機上的socket同另一臺計算機通話創(chuàng)建一個通信信道,程序員可以用這個信道在兩臺機器之間發(fā)送數(shù)據(jù)。當你發(fā)送數(shù)據(jù)時,TCP/IP協(xié)議棧的每一層都給你的數(shù)據(jù)里添加適當