freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java的網(wǎng)絡(luò)聊天室-文庫吧

2025-04-17 20:51 本頁面


【正文】 在比較低的層次上通信的。 具體的說:一個服務(wù)器應(yīng)用程序一般偵聽一個特定的端口等待客戶端的連接請求,當一個連接請求到達時,客戶端和服武器端建立一個通信連接,在連接過程中,客戶端被分配一個本地端口與一個 Socket 建立連接,客戶端通過寫 Socket 來通知服務(wù)器,以讀 Socket 中的信息,類似的服務(wù)器也獲得一個本地端口,它需要一個新的端口號來偵聽原始端口上的其他連接請求。服務(wù)器也通過它的本地端口連接一個 Socket,通過讀寫和客戶端通信 [8]。 Socket 程序的工作過程: Socket 連接:在通信開始之前由通信雙方確認身份,建立一條專用的虛擬連接道。 :利用虛擬連接通道傳送數(shù)據(jù)信息進行通 信 。 :通信結(jié)束時,再將所建的虛擬連接拆除。 具體如下: [12] 4 圖 1 Socket 程序的工作過程 三次握手協(xié)議: 第一次握手:原主機發(fā)送一個帶有本次連接的序號的請求的一個數(shù)據(jù)幀 第二次握手:目的主機收到請求后,如果同意連接,則發(fā)回一個帶有一個本次連接序號和源端機連接序列號的確認。 第三此握手:源端機收到含有兩次初始序列號的應(yīng)答后,再 向目的主機發(fā)送一個帶有兩次連接的序列號的確認。 具體過程如下 : [4] 圖 2 三次握手協(xié)議 1 服務(wù)器 serversocket 2 監(jiān)聽 5 讀 6 寫 7 關(guān)閉 3 客戶端 socket 6 讀 5 寫 7 關(guān)閉 5 開發(fā)環(huán)境 及 工具 本系統(tǒng)所用的工具: 服務(wù)器端:( Windows 平臺)首先應(yīng)有 java 環(huán)境 jdk,建議采用 ; Eclipse。 客戶端: java 環(huán)境 jdk,建議 ; Eclipse。 本系統(tǒng)運行所需用到的環(huán)境為 : 硬件配置 : 中央處理器( CPU) : P4 的處理器; 硬 盤: 40GB以上硬盤; 內(nèi) 存: 256以上的 DDR內(nèi)存; 顯 卡: 128M以上 顯存顯卡 軟件 配置 : WINDOWS XP 版本、 AllInOneEclipse31 。 聊天系統(tǒng)的總體設(shè)計要點 實現(xiàn)思想 [15] 在 Inter 上的聊天程序一般都是以服務(wù)器提供服務(wù)端 連接響應(yīng),使用者通過客戶端程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在 TCP/IP 環(huán)境下,實現(xiàn)服務(wù)器端和客戶端兩部分程序。 服務(wù)器端工作流程 : 服務(wù)器端通過系統(tǒng)調(diào)用創(chuàng)建一個 ServerSocket 與指定的本地端口綁定,就可以在端口進行偵聽。如果有客戶端連接請求, 則創(chuàng)建一個 Socket,將客戶端地址賦給這個 Socket。然后登錄成功的客戶就可以在服務(wù)器上聊天了。 客戶端工作流程 : 客戶端程序相對簡單,只需要建立一個 Socket 與服務(wù)器端連接,成功后通過這個 Socket來發(fā)送和接收數(shù)據(jù)就可以了。 6 系統(tǒng)功能流圖 : 圖 3 系統(tǒng)功能流圖 功能 流程說明如下: (1)啟動服務(wù)器程序, 服務(wù)器端創(chuàng)建一個 ServerSocket 對象,指定端口號。 (2)ServerSocket 對象等候客戶端的連接請求。 (3)啟動客戶端程序,登錄用戶。如果未注冊,先注冊再登錄。登錄成功進入聊天室用戶界面。 (4)客戶端創(chuàng)建一個 Socket 對象,指定主機地址和端口號,向服務(wù)器 發(fā) 送連接請 求。 (5)服務(wù)器端收到客戶端請求,建立一條 TCP 連接,再創(chuàng)建一個 Socket 對象與客戶端 的 Socket 對象進行通信。 (6)服務(wù)器端和客戶端分別建立字節(jié)輸入 /輸出流,進行數(shù)據(jù)傳輸準備。 (7)服務(wù)器端和客戶端通過各自的字節(jié)輸入流獲得對方發(fā)送過來的數(shù)據(jù),通過字節(jié)輸出 向?qū)Ψ桨l(fā)送數(shù)據(jù)。 (8)一方?jīng)Q定 結(jié)束 通信,向?qū)Ψ桨l(fā)送結(jié)素信息,另一方收到結(jié)束信息后,雙方分別關(guān)閉各自的 TCP連接。 (9)對象停止等候客戶端連接請求 。 服務(wù)器 serversocket 監(jiān)聽 建立與客戶端連接的套接字 關(guān)閉 服務(wù)器 客戶端 socket 服務(wù)端信息 2.向服務(wù)器 寫 信息 關(guān)閉 客戶端 啟動 啟動 登錄 注冊 7 多用戶實時工作原理圖 [5] 圖 4 多用戶實時 工作原理圖 注:服 務(wù)器的 run()方法中采用了 while(true)結(jié)構(gòu),不斷監(jiān)聽客戶端的請求,如收到請求,建立與當前請求的客戶端連接的套接字,從而與客戶端建立聯(lián)系。 系統(tǒng)的功能模塊劃分 及設(shè)計原理 當用戶聊天時,將當前用戶名、聊天對象、聊天內(nèi)容和是否私聊進行封裝并且序列化,然后與服務(wù)器建立 Socket 連接,再用對象輸出流包裝 Socket 的輸出流將聊天信息對象發(fā)送給服務(wù)器端。當用戶發(fā)送聊天信息時,服務(wù)端將會收到客戶端用 Socket 傳輸過來的聊天信息對象,然后將其強制轉(zhuǎn)換為 Chat 對象,并將本次用戶的聊天信息對象添加到聊天 對象集 Message 中,以供所有聊天用戶訪問。接收用戶的聊天信息是由多線程技術(shù)實現(xiàn)的,因為客戶端必須時時關(guān)注更新服務(wù)器上是否有最新消息,在本程序中設(shè)定的是 1秒刷新服務(wù)器一次,如果間隔時間太短將會增加客戶端與服務(wù)器端的通信負擔,而間隔時間長就會讓人感覺沒有時效性,所以經(jīng)過權(quán)衡后認為 1 秒最佳,因為每個用戶都不可能在 1 秒內(nèi)連續(xù)發(fā)送信息。當每次用戶接收到聊天信息后將會開始分析聊天信息然后將適合自己的信息人性化顯示在聊天信息界面上。 服務(wù)器程序模塊 () 服務(wù)器與客戶間通過套接口 Socket(TCP)連接。在 java 中使用套接口相當簡單,Java API 為處理套接口的通信提供了一個類 ,使得編寫網(wǎng)絡(luò)應(yīng)用程序相對容易。服務(wù)器采用多線程以滿足多用戶的請求,并通過創(chuàng)建一個 ServerSocket 對象來監(jiān)聽來自客戶的連接請求,默認端口為 8000,然后無限循環(huán)調(diào)用 accept()方法接受客戶程序的連接。 服務(wù)器具有以下功能 : (1)啟動服務(wù),建立偵聽,接受客戶端連接。 (2)從流中讀取經(jīng)過序列化的對象。 (3)分析 讀取的對象進行相應(yīng)的操作(登錄信息的驗證反饋、注冊信息的驗 證和反饋、轉(zhuǎn)發(fā)聊天信息等) (4)向客戶端發(fā)送 系統(tǒng) 消息。 (5)保存日志 (6)關(guān)閉服務(wù),并向客戶端發(fā)送服務(wù)器關(guān)閉消息。 服務(wù)器程序模塊源碼: 8 ServerSocket serverSocket。 //服務(wù)器套接字 static Vector u=new Vector(1,1)。 //初始聊天用戶對象集 static Vector v=new Vector(1,1)。 //初始聊天信息對象集 public void run() { Try //無限循環(huán)實現(xiàn)多線程,實現(xiàn)與多個用戶的 同時連接 while(true) { //監(jiān)聽并接受客戶的請求 Socket client = ()。 //繼承 Thread 支持多線程 new Connection(client,u,v)。 }} catch(IOException e) {fail(e,不能監(jiān)聽! )。} } 當用戶發(fā)送聊天信息時,服務(wù)端將會收到客戶端用 Socket 傳輸過來的聊天信息對象,然后將其強制轉(zhuǎn)換為 Chat 對象,并將本次用戶的聊天信息對象添加到聊天對象集Message 中,以供所有聊天用戶訪問。 登錄程序模塊( ) 是客戶端程序登錄界面,負責用戶帳號信息的驗證與接收服務(wù)器的反饋??蛻舳苏埱筮B接,服務(wù)器的 accept()方法建立與客戶端的套接字連接。客戶端將登錄信息封裝成Customer 對象通過輸出流 發(fā)送服務(wù)器,等待服務(wù)器的驗證,服務(wù)器反饋驗證信息,客戶端根據(jù)反饋信息進行登錄和登錄信息錯誤處理。 關(guān)鍵代碼如下: try { //連接到服務(wù)器 Socket toServer。 toServer = new Socket(strServerIp,1001)。 //寫客戶詳細資料到服務(wù)器 socket ObjectOutputStream streamToServer=new ObjectOutputStream (())。 ((Customer)data)。 //讀來自服務(wù)器 socket的登錄狀態(tài) BufferedReader fromServer=new BufferedReader(new InputStreamReader(()))。 String status=()。 } 注冊程序模塊 () 為客戶端程序注冊界面,負責用戶帳號信息的注冊驗證與反饋。注冊模塊的原理跟登錄模塊基本相同。注冊信息封裝成 Register_Customer 對象,但服務(wù)器只驗證用戶名,且只要求用戶名不重復(fù),服務(wù)器檢驗注冊信息文件中的用戶名,若不重復(fù)則反饋注冊成功的信息。其他的注冊信 息(密碼、年齡、郵箱)合法性都交給注冊模塊自己完成。 9 客戶 聊天主 程序模塊 () 客戶通過 Socket(IAddress,port)建立與服務(wù)器的連接??蛻舳送ㄟ^構(gòu)造ObjectInputstream,ObjectOutputstream 與服務(wù)器建立輸入輸出流,然后雙方通過該輸入輸出流來相互傳遞信息,服務(wù)器一旦收到客戶方的連接請求,服務(wù)器 accept()方法返回一個新建的 Socket 對象??蛻舳私邮芊?wù)器傳來的聊天信息進行處理后顯示在自己的聊天紀錄中。同樣客戶端要發(fā)送文件和信 息時也向服務(wù)器發(fā)送請求,服務(wù)器同樣通過accept()方法返回一個 Socket 對象,客戶端就可也進行相應(yīng)的操作。 聊天客戶端必須具有以下功能。 (1)連接服務(wù)器,發(fā)送用戶登陸請求。 (2)向服務(wù)器發(fā)送聊天信息。 (3)接收服務(wù)器轉(zhuǎn)發(fā)的了信息。 (4)接受服務(wù)器發(fā)送的系統(tǒng)消息。 關(guān)鍵源碼如下: public void run() { try { while (true) { Socket toServer。 toServer = new Socket(strServerIp, 1001)。 // 將信息發(fā)往服務(wù)器 Message messobj = new Message()。 ObjectOutputStream streamtoserver = new ObjectOutputStream( ())。 ((Message) messobj)。 // 收來自服務(wù)器的信息 ObjectInputStream streamfromserver = new ObjectInputStream( ())。 messobj = (Message) streamfromserver; } } } 因為使用了 while(true)無限循環(huán),使得客戶端能不斷更新聊天紀錄,實現(xiàn)了實時聊天。這里我們設(shè)置的更新周期為 1s,這樣使服務(wù)器的負擔不會太重, 1s的等待時間也使得用戶能夠接受。 音樂播放程序模塊 根據(jù) JAVA 系統(tǒng)餓 MIDI 功能來創(chuàng)建一個 Sequencer 對象,使用 Javasound 來處理MIDI 聲音文件。在創(chuàng)建好 Sequence 類對象之后,就可以播放該 MIDI 聲音文件了,播放的步驟如下: (1)調(diào)用音序器( Sequence 對象)中的 open()方法,使聲音播放設(shè)備處于準備狀態(tài); (2)調(diào)用音序器的 start()方法,開始播放聲音文件; (3)調(diào)用 close()方法結(jié)束播放,并釋放資源。 在線程使用 while()做到循環(huán)播放,在音樂播放和停止的控制上,通過控制線程中while() 的條件來實現(xiàn),具體參見代碼。 10 4. 系統(tǒng)實現(xiàn)與最終效果 系統(tǒng)工作的過程: 本 系統(tǒng) 的編譯環(huán)境,及編寫平臺為 java.。主要用到的類為 包中的 Socket類。編寫了多個圖形界面,包括服務(wù)器界面,客戶端聊天界面,登錄界面,注冊界面,音樂播放器界面等。 以服務(wù)器所在的主機的 ip 為“ ”所偵聽的端口號為“ 8000”。分別先后啟動服務(wù)器和客戶端應(yīng)用程序,客戶端用戶填入登錄信息,當服務(wù)器收到客戶端的登錄請求后,若驗證登錄信息正確,則向客戶端發(fā)送一個反饋一個登錄成功的消息,客戶端和服務(wù)器通過套接字建立了聯(lián)系。建立連接后雙方就可以相互通信:客戶端在自己的 文本框輸入要發(fā)送 的信息點擊發(fā)送后,發(fā)送的信息就會顯示在服務(wù)器和目的客戶端的文本域中,同樣服務(wù)器也 可以在自己的文本框輸入系統(tǒng)信息,點擊發(fā)送信息按鈕后,發(fā)送的信
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1