實(shí)現(xiàn)基于 C/S 模式的點(diǎn)對(duì)點(diǎn)的聊天室
完整資料進(jìn)入【數(shù)字空間】查看——baidu搜索"writebug"
研究?jī)?nèi)容
基于 C/S 模式實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)聊天的功能,即一個(gè)服務(wù)器監(jiān)聽(tīng)一個(gè)客戶端的請(qǐng)求的通信??蛻舳伺c服務(wù)器可以在同一臺(tái)機(jī)器上,但是客戶端與服務(wù)器處理的信息以及信息處理的方式不同,分為客戶端程序和服務(wù)器端程序。在此基礎(chǔ)上,再嘗試擴(kuò)展多線程聊天和安卓系統(tǒng)或者微信小程序。最終代碼會(huì)放在 GitHub 上。
技術(shù)現(xiàn)狀
現(xiàn)在的聊天室有用 WebSocket,CGI 技術(shù),但是一個(gè)簡(jiǎn)單的用 Java socket 實(shí)現(xiàn)的點(diǎn)對(duì)點(diǎn)聊天系統(tǒng)比較實(shí)用穩(wěn)定,基于 TCP 的服務(wù)器 socket 和客戶端 socket 步驟是建立連接,處理數(shù)據(jù),關(guān)閉連接。
技術(shù)方案概述
1. 編程環(huán)境
工具:Myeclipse(Eclipse,Android SDK)
語(yǔ)言:Java
2. 設(shè)計(jì)原則
基于 c/s 架構(gòu),實(shí)現(xiàn)的是服務(wù)器和客戶端的點(diǎn)對(duì)點(diǎn)的連接,點(diǎn)對(duì)點(diǎn)傳輸數(shù)據(jù)??蛻舳酥g不是直接連接和通信,而是通過(guò)與服務(wù)器連接,通過(guò)服務(wù)器轉(zhuǎn)發(fā)信息,實(shí)現(xiàn)客戶端之間的通訊。
3. 設(shè)計(jì)要點(diǎn)
本點(diǎn)對(duì)點(diǎn)聊天系統(tǒng)設(shè)計(jì)要點(diǎn)主要有:
群聊即客戶端發(fā)送消息給服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)給在線的所有客戶端,實(shí)現(xiàn)群聊模式;
私聊即客戶端發(fā)送消息給服務(wù)器,服務(wù)器識(shí)別所要發(fā)送的目標(biāo)人,然后判斷他/她是否在線,若在線將數(shù)據(jù)發(fā)送給目標(biāo)人 ,若不在線,數(shù)據(jù)記錄保留在服務(wù)器數(shù)據(jù)庫(kù)中,等待目標(biāo)人上線,獲取來(lái)自數(shù)據(jù)庫(kù)的屬于他的消息記錄;
客戶端之間可以發(fā)送文字和表情圖片。通過(guò)將相關(guān)信息數(shù)據(jù)發(fā)送給服務(wù)器,再經(jīng)過(guò)字節(jié)流等轉(zhuǎn)換,服務(wù)端收到消息,再轉(zhuǎn)發(fā)給目標(biāo)人,并進(jìn)行流的包裝,最終顯示在界面聊天內(nèi)容中;
設(shè)計(jì)了歡迎界面,登錄界面,登錄界面包括了注冊(cè)和登錄,具體內(nèi)容見(jiàn)如下方案設(shè)計(jì);
設(shè)計(jì)了信息列表,分為好友和群聊,可以查找好友,顯示頭像,通過(guò)點(diǎn)擊頭像進(jìn)入聊天界面;





