日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

乐聊----java界面聊天室

發(fā)布時(shí)間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 乐聊----java界面聊天室 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

      • 項(xiàng)目源碼
      • 一、前言
    • 項(xiàng)目技術(shù)
      • 二、功能分析
      • 三、 功能模塊
      • 四、實(shí)現(xiàn)
          • 客戶端與服務(wù)端交互的通信格式:
          • 1.客戶端
          • 2.服務(wù)端
      • 五、運(yùn)行
      • 六、對(duì)項(xiàng)目的測(cè)試
      • 七、展望

項(xiàng)目源碼

https://github.com/zhuozhuotao/chatroom

一、前言

聊天室的項(xiàng)目之前就已經(jīng)做過(guò),但是當(dāng)時(shí)只可在控制臺(tái)進(jìn)行操作。最近閑著沒(méi)事,邊學(xué)邊做完成了一份帶界面的聊天室項(xiàng)目,做完后很開心,所以我給項(xiàng)目起名為樂(lè)聊,哈哈哈哈。
項(xiàng)目大的來(lái)說(shuō)由客戶端和服務(wù)端倆部分組成。
客戶端:可以進(jìn)行注冊(cè)、登錄、私聊、創(chuàng)建群、群聊操作,注冊(cè)、登錄成功后都會(huì)彈出相應(yīng)的提示框。并且如果有新用戶上線就會(huì)提醒其他在線用戶該用戶上線了,用戶上線后,可以在用戶列表中看到在線好友。用戶可以選擇一個(gè)在線好友進(jìn)行私聊,或者創(chuàng)建群進(jìn)行群聊,這里有一個(gè)細(xì)節(jié)就是只有創(chuàng)建群的用戶可以在自己的群列表看到創(chuàng)建的群,其他群用戶只有當(dāng)?shù)谝淮问盏饺合r(shí)才會(huì)將群名顯示在群列表中,這個(gè)細(xì)節(jié)仿照了微信創(chuàng)建討論組(我才不會(huì)告訴你我想偷懶這個(gè)事實(shí))。
對(duì)于服務(wù)端:服務(wù)端監(jiān)聽客戶端的連接,用戶登錄時(shí)必須使用已經(jīng)注冊(cè)的用戶名和密碼。在服務(wù)端會(huì)顯示當(dāng)前的端口、IP、登錄信息、在線人數(shù),此外還會(huì)顯示出聊天內(nèi)容哈~就一個(gè)輸出語(yǔ)句而已,是不是感覺(jué)很好怕?并且在用戶登錄的時(shí)候會(huì)實(shí)時(shí)刷新用戶列表。

項(xiàng)目技術(shù)

  • Mysql數(shù)據(jù)庫(kù)
  • 線程池
  • 集合框架
  • Socket編程
  • swing組件
  • 谷歌提供的json

二、功能分析

主要實(shí)現(xiàn)了注冊(cè)、登錄、加載用戶列表、群聊、私聊的功能。

三、 功能模塊

四、實(shí)現(xiàn)

客戶端與服務(wù)端交互的通信格式:

@Data public class MessageVo {/*** type:告知服務(wù)器要進(jìn)行的動(dòng)作。1:用戶登錄。2:私聊。3:創(chuàng)建群聊。4:群聊* content:發(fā)送到服務(wù)器的具體內(nèi)容* to:告知服務(wù)器要將信息發(fā)給那個(gè)用戶。*/private String type;private String content;private String to; }
1.客戶端

1.1實(shí)體類User

將數(shù)據(jù)庫(kù)表的四個(gè)字段(id、userName、password、brief)封裝為User類。
1.2完成Dao層–數(shù)據(jù)庫(kù)操作
BasedDao:主要完成JDBC的加載數(shù)據(jù)源,連接數(shù)據(jù)庫(kù),關(guān)閉資源這三個(gè)功能。
AccountDao:繼承BasedDao類,完成JDBC第三步:執(zhí)行sql語(yǔ)句。分別使用MySQL的insert和select來(lái)進(jìn)行用戶注冊(cè)和登錄。用戶注冊(cè)即提交數(shù)據(jù)到服務(wù)器,成功返回true,失敗返回false。用戶登錄即查找數(shù)據(jù)庫(kù),成功返回User對(duì)象。

1.3業(yè)務(wù)層–sercice
(1)用戶注冊(cè)
在登錄頁(yè)面點(diǎn)擊注冊(cè)按鈕,提取輸入框數(shù)據(jù)持久化到數(shù)據(jù)庫(kù)
具體實(shí)現(xiàn):

  • 在輸入框獲取用戶的注冊(cè)信息。
  • 將獲取到的輸入信息封裝為User類。
  • 調(diào)用AccountDao類的注冊(cè)方法將用戶持久化到數(shù)據(jù)庫(kù)。

    (2)建立與服務(wù)器的連接

    客戶端創(chuàng)建Socket套接字,Socket 類的構(gòu)造函數(shù)試圖將客戶端連接到指定的服務(wù)器和端?號(hào)。如果通信被建?,則在客戶端創(chuàng)建?個(gè) Socket 對(duì)象能夠與服務(wù)器進(jìn)?通信。
    使用InputStream讀取服務(wù)器發(fā)來(lái)的信息,使用OutputStream給服務(wù)器發(fā)送消息。
    ·
    (2)用戶登錄
  • 點(diǎn)擊登錄按鈕。
  • 檢驗(yàn)用戶輸入的登錄信息。
  • 登錄成功則發(fā)送提示信息并與服務(wù)器建立連接,將當(dāng)前用戶的用戶名發(fā)送到服務(wù)端,讀取服務(wù)端發(fā)回的所有在線用戶信息,然后加載用戶列表界面。
  • 登錄失敗則停留在當(dāng)前頁(yè)面并提示用戶信息錯(cuò)誤。
    (3)加載用戶列表***
  • 登錄成功后動(dòng)態(tài)加載用戶列表。
  • 創(chuàng)建群聊后動(dòng)態(tài)加載群列表。
  • 定義后臺(tái)線程不斷監(jiān)聽服務(wù)器發(fā)來(lái)的信息,包括:好友上線信息,用戶私聊、群聊。
  • 創(chuàng)建私聊、群聊的label點(diǎn)擊事件。
    (5)私聊
public PrivateChatGUI(String friendName,String myName,Connect2Server connect2Server)

向輸入框輸入聊天內(nèi)容,當(dāng)監(jiān)聽到用戶按下回車鍵后,會(huì)將信息發(fā)給服務(wù)端,將自己發(fā)送的信息展示到當(dāng)前私聊頁(yè)面。
(6)群聊

當(dāng)用戶點(diǎn)擊“創(chuàng)組按鈕后”,進(jìn)入創(chuàng)建群組頁(yè)面,選擇在線好友,點(diǎn)擊提交按鈕將信息提交給服務(wù)端,刷新好友列表界面的群列表。

public GroupChatGUI(String groupName,Set<String> friends,String myName,Connect2Server connect2Server)

由創(chuàng)建群聊的人點(diǎn)擊群名標(biāo)簽,彈出群聊頁(yè)面即可進(jìn)行群聊。
具體實(shí)現(xiàn):
1.創(chuàng)建群聊界面,界面由用戶輸入框、聊天信息框以及群好友列表組成。
2.加載群中的好友列表。
3.捕捉鍵盤的輸入,當(dāng)用戶按下enter建后,將群聊信息發(fā)送給服務(wù)器去處理。

2.服務(wù)端

1.創(chuàng)建ServerSocket基站,循壞等待客戶端連接。
2.將客戶端連接放入線程池去處理。
3.檢測(cè)到客戶端連接后創(chuàng)建一個(gè)Socket去處理用戶請(qǐng)求。
4.接受到客戶端發(fā)來(lái)的信息后,對(duì)信息進(jìn)行反序列化處理。
5.根據(jù)反序列后收到的對(duì)象屬性進(jìn)行相應(yīng)的處理。

五、運(yùn)行

1.先啟動(dòng)服務(wù)端

2.啟動(dòng)客戶端

3.點(diǎn)擊注冊(cè)按鈕

3.1注冊(cè)成功彈出提示框

一共注冊(cè)了三個(gè)人

3.輸入框輸入已注冊(cè)的用戶名和密碼,輸入正確登錄成功,輸入錯(cuò)誤彈出提示框。


4.點(diǎn)擊登錄成功的確認(rèn)按鈕進(jìn)入用戶列表界面
4.1新用戶上線會(huì)給當(dāng)前所有用戶發(fā)上線提示,點(diǎn)擊確認(rèn)按鈕后加載用戶列表:

4.2點(diǎn)擊好友標(biāo)簽進(jìn)入私聊界面

輸入信息發(fā)送回車,

4.3點(diǎn)擊創(chuàng)建群組:

創(chuàng)建好后,只有當(dāng)前用戶群列表會(huì)顯示群名稱,其他用戶只有當(dāng)收到群聊消息時(shí)才會(huì)顯示。

進(jìn)行群聊:


這次群聊選擇了倆個(gè)列表好友創(chuàng)建群聊,當(dāng)然如果創(chuàng)建了一個(gè)也會(huì)只有群內(nèi)的哪一個(gè)用戶顯示群聊界面。

六、對(duì)項(xiàng)目的測(cè)試

作為一名喜歡測(cè)試行業(yè)的小姐姐,我在完成項(xiàng)目過(guò)程中不斷思考測(cè)試點(diǎn)并將他們逐一記錄,并在完成項(xiàng)目之后作了一份測(cè)試用例,笑納~

七、展望

  • 發(fā)送文件、圖片。
  • 點(diǎn)擊群好友列表中的好友進(jìn)入私聊頁(yè)面。
  • 收到上線、新消息后聲音提醒。
  • 用戶注銷。
  • 用戶密碼修改。

總結(jié)

以上是生活随笔為你收集整理的乐聊----java界面聊天室的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。