聊天室程序設計_第1頁
聊天室程序設計_第2頁
聊天室程序設計_第3頁
聊天室程序設計_第4頁
聊天室程序設計_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、java網絡編程-文本傳輸 學院:通信與信息工程班級:電子商務1002班姓名:王鵬飛學號:1007100222網絡聊天室功能描述網絡聊天室是一種應用廣泛網絡聊天方式,操作簡單,功能豐富,是教學和學習面向對象的編程思想的理想項目??梢允褂枚喾N編程語言設計和開發(fā)出功能完善的網絡聊天室。本系統采用c/s架構設計,用java語言設計和實現,整個項目分為服務器端和客戶端。使用了最新的java se標準swing組件,開發(fā)出簡潔美觀布局合理的客戶端和服務器界面;利用socket網絡開發(fā)技術實現客戶端和服務器端的連接訪問,實現網絡通信功能;通過對數據流合理的封裝,實現信息發(fā)送和接受。同時,采用多線程、多任務

2、的設計思想,令服務器性能穩(wěn)定,客戶端通信流暢,基本實現聊天室的功能。服務器端功能:服務器的基本功能有:啟動服務器,關閉服務器,監(jiān)聽客戶端連接請求,顯示在線用戶,顯示客戶端連接信息,發(fā)送系統消息等。服務器端功能描述:1. 啟動服務器:客戶在運行服務端程序后,點擊啟動服務器,服務器程序創(chuàng)建并箭筒特定端口的serversocket,并啟動一個主線程,等待客戶端的連接,如果有客戶端連接,服務器向工作線程隊列中加入與客戶通信的任務,工作線程不斷從工作線程中取出任務并執(zhí)行。同時在服務器消息面板中顯示,服務器啟動成功。2. 關閉服務器:服務器關閉時,向所有連接的客戶端發(fā)送消息,告知將服務器關閉,同時關閉so

3、cket,之后服務器界面關閉3. 監(jiān)聽客戶端請求:服務器在啟動后一直監(jiān)聽客戶端的運行情況,比如有新用戶登錄,用戶退出等。4. 顯示在線用戶:用戶登錄后即客戶端與服務器連接成功,服務器端用戶列表界面顯示出所有登錄用戶的用戶名,用戶退出后服務器更新用戶列表5. 顯示用戶連接信息:用戶在登錄成功后,服務器端服務信息界面顯示用戶登錄的信息,包括客戶端ip地址,端口號。6. 發(fā)送系統消息:可以從服務器端廣播系統消息,該消息會發(fā)送給所有連接的客戶端,此功能 可用于服務器管理者向所有用戶發(fā)送重要的系統消息。服務器界面如下圖所示:客戶端功能:客戶端有用戶登錄功能,連接服務器功能,斷開服務器供,顯示聊天室所有在

4、線用戶功能,統計聊天室用戶數量功能,顯示當前用戶用戶名的功能,聊天室聊天功能,用戶退出聊天室等功能。功能圖如下圖所示:具體功能描述:1. 用戶登錄:用戶打開聊天室客戶端程序后,輸入用戶名,點擊連接服務器,就可以進入聊天室系統,為防止用戶不知道服務地址和端口號,用戶界面上已經將服務地址和端口號設定,且不能更改,用戶只需輸入用戶名,只要用戶名符合要求,可以輸入任何用戶名,無需注冊,任何人都可以登錄,退出后不會留下個人信息,如果需要再次登錄只需再次輸入用戶名即可,可以與上次登錄的用戶名不一致。2. 連接服務器:用戶在輸入用戶名后,點擊連接服務器即可進入聊天室系統,否則無法發(fā)送消息。此時服務器接收客戶

5、端的請求,與客戶端建立通信,服務器顯示用戶的練級信息,及新用戶的用戶名,端口號,同時告知聊天室其他成員,某某用戶加入聊天室,更新服務器與所有客戶端的用戶列表。3. 斷開服務連接:用戶在登錄聊天室成功后,如果想要退出系統,可以點擊斷開服務器,或點擊關閉按鈕,或點擊窗口關閉按鈕就可退出聊天室,與服務器斷開練級,用戶可以重新登錄。4. 顯示在線用戶列表:用戶在登錄聊天室后,服務器端增加新用戶的用戶名,同時遍歷原有用戶列表,將新用戶的用戶名增加到用戶列表中,同時更新所有客戶端的用戶列表,并顯示更新結果。5. 統計聊天室所有用戶數量:在服務器更細用戶列表后統計用戶數量,并顯示在所有客戶端。此功能屬于顯示

6、在線用戶列表的次要功能。6. 顯示當前用戶:用戶登錄后,輸入的用戶名會保存在用戶名輸入文本域內,同時在用戶列表中以紅色字體顯示當前用戶的用戶名。如果用戶同時開啟多個客戶端,此功能用于區(qū)分不同的客戶端。7. 聊天功能:這是聊天室的主要功能,用戶可以發(fā)送任何文字與聊天室的所有成員聊天,并且接收其他用戶發(fā)送的消息,類似qq群組的功能。8. 退出聊天室:用戶在想要退出聊天室時。點擊關閉按鈕即可突出聊天室。此功能類似關閉連接功能。客戶端效果效果如下:(界面效果隨系統主題更改)實現技術a) 使用serversocket、socket完成服務端和客戶端的連接。b) 服務端使用多線程的方式可以接受多個客戶端。

7、c) 使用對象的方式,在服務端和客戶端之間傳送數據。問題解決辦法d) 服務端和客戶端的數據通過什么方式維護?將這些數據封裝成類,服務器和客戶端發(fā)送對象來維護。e) 當服務端強制退出時,應該做什么處理?告訴客戶端服務端退出,然后關閉所有到服務端的連接。客戶端根據服務端退出,斷開和服務端的連接。服務端效果圖:客戶端效果圖:群聊通信:設計思路:實現網絡通信必須建立在tcp/ip協議的基礎上,致力于實現應用層,傳輸層向應用層提供套接字socket接口.socket封裝下層的數據傳輸細節(jié)。應用層的程序通過socket來建立與遠程主機的連接,以及進行數據傳輸。聊天室程序采用c/s架構,因此先設計圖形界面,

8、將必要的組件布局好,然后測試在不同計算機上的顯示效果,然后更改,確定界面沒有問題后,設計程序的邏輯功能等。服務器端程序點擊啟動后顯示一個服務器界面,然后在啟動服務器上添加監(jiān)聽器,要使服務器能穩(wěn)定的收發(fā)數據,采用tcp的傳輸模式,服務器通過一直監(jiān)聽端口,來接收客戶程序的連接請求,在服務器程序中首先創(chuàng)建一個serversocket對象,在構造方法中指定監(jiān)聽的端口:serversocket=new serversocket(8000);/監(jiān)聽8000端口服務器端口號使用1025到65535之間的自定義的服務端口。serversocket的構造方法在操作系統中把當前進程注冊為服務器進程,服務器程序調用

9、serversocket對象的accept(),方法,通過該方法一直監(jiān)聽端口,等待客戶端的連接請求,如果接收到一個連接請求,accept()方法返回一個socket對象,這個socket對象與客戶端的socket對象形成一條通向線路:socket=serversocket.accept();/等待客戶端的連接請求socket類通過調用inputstream()和outputstream()方法,返回輸入流inputstream和輸出流outputstream對象。程序向輸出流寫數據,完成發(fā)送數據,從輸入流讀數據,接收來自對方的數據。outputstream=new objectoutputst

10、ream(socket.getoutputstream();inputstream=new objectinputstream(socket.getinputstream();objectoutputstream繼承自outputstream服務器啟動后就一直監(jiān)聽端口等待客戶端連接,將客戶端傳過來的數據封裝成對象,然后通過objectoutputstream 將 java 對象的基本數據類型寫入 outputstream。可以使用 objectinputstream 讀?。ㄖ貥嫞ο?。通過使用流則可以在另一臺主機上或另一個進程中重構對象。客戶端財通同樣的思路先設計程序的界面,然后在不同組件中添加監(jiān)聽器,客戶進程的端口由所在主機的操作系統動態(tài)分配,當客戶的進程要求與一個服務器進程進行連接時操作系統為客戶進程隨機分配一個還未被占用的端口,當客戶進程與服務器斷開連接時這個端口就被釋放。客戶啟動客戶端的程序然后輸入用戶名,先對用戶名進行校驗,輸入符合要求后,然后將用戶名,端口號,主機地址封裝成對象,然后調用socket對象的方法將數據發(fā)送到服務器上,然后服務器將用戶名增加進用戶列表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論