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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

用Java做一个基于Swing的多人网络聊天室

發布時間:2023/12/20 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Java做一个基于Swing的多人网络聊天室 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

項目簡介:使用Java語言開發的多人聊天室程序


開發環境:MacOS+NetBeans8.1+JDK1.8


項目具體功能:

? ? 服務器端:

  • 服務器端界面窗口
  • 啟動服務器按鈕--------啟動服務器功能
  • 停止服務器按鈕--------停止服務器功能----服務器停止,所有聊天退出
  • 退出服務器按鈕--------退出服務器功能----服務器關閉,所有聊天退出
  • 即時聊天消息顯示文本域--------即時聊天信息顯示功能
  • 即時在線用戶顯示文本域--------即時在線用戶顯示功能
  • ? ? 客戶端:

  • 登錄功能
  • 聊天室登錄界面窗口
  • 用戶名輸入框--------用戶名稱輸入功能
  • 服務器地址輸入框--------服務器地址輸入功能
  • 端口號輸入框--------端口號輸入功能
  • 進入聊天室按鈕--------登錄進入聊天室功能
  • 退出聊天室按鈕--------退出聊天室功能
  • 聊天室功能
  • 群聊主界面
  • 即時聊天消息顯示文本域--------即時群聊天消息顯示
  • 即時在線用戶顯示文本域--------即時在線用戶情況顯示
  • 退出聊天室功能按鈕--------退出聊天室功能
  • 清除聊天記錄功能按鈕--------清除聊天記錄功能
  • 文本信息輸入文本框--------文本信息輸入功能
  • 發送功能按鈕--------文本信息發送功能
  • 單人聊天功能按鈕--------單人聊天模式轉換功能
  • 群聊天功能
  • 單人聊天
  • 聊天信息文本域--------顯示即時聊天信息以及對方姓名、發送時間
  • 文本輸入框--------文本信息輸入功能
  • 發送按鈕--------文本信息發送功能

  • 首先,我喜歡先做界面

    畢竟是面向對象編程哈哈哈

    我得先有個對象啊,干寫代碼沒啥意思

    拿起了祖傳的NetBeans

    說起這個軟件,那真的是對小白來說很友好的一款集成開發軟件了

    首先,支持中文,其次它有些卡,能讓小白有充分的時間觀察自己的代碼(哈哈哈皮一下)

    最重要的是它支持GUI窗體的創作--------新建一個Jframe項目就好

    具體的操作就是拖動你要的組件,調節好大小,然后重命名,然后添加監聽事件,剩下的就是碼代碼了


    先來服務器端的界面

    對,就是這樣,三個按鈕,兩個文本域

    下來是客戶端

    首先是登錄界面

    下來是聊天室主界面

    單人聊天界面:

    退出確認界面:


    項目GUI界面代碼傳送門

    上面是這個項目圖形界面代碼的傳送門,在這里,其實有了集成工具的幫助,處理起來也不困難,只是麻煩一點。

    只需要自己仔細一些,多思考,不要遺漏了一些細節。


    下面來說下項目的核心實現

    說白了,就是通過網絡實現計算機之間的交互嘛

    使用Java的Socket實現客戶端和服務器端之間的連接

    實現客戶端重復發送數據到服務器端的功能。

    即用戶可以在控制臺不斷輸入內容,并將內容逐一發送給服務端。并在服務端顯示。

    單人聊天比較簡單,但是我要做的是一個多人的聊天室

    那么多線程必不可少

    我通過繼承Thread類分別做了ClientThread和ServerThread兩個類,把關于接收到Socket滯后的步驟交給線程類去處理

    又既然是多人聊天,服務器在這里應該有廣播的作用,所以我寫了一個BroadCast類

    獲取到所有客戶端的socket,然后在將讀到的信息循環發送給每個用戶

    然后使用一個靜態的向量用來存儲所有服務器針對客戶端而創立的線程

    然后發送信息的時候直接使用這個向量取出socket即可

    然后是客戶端,只要思考清楚一個問題

    什么時候獲取輸入流然后讀數據呢?

    其實一旦拿到socket對象,什么時候獲取都可以

    即想什么時候執行readline()方法都可以

    具體實現代碼傳送門

    具體的一些細節,可以看看代碼中的注釋。寫了比較久,但還是有很多不完善的地方。希望多多指正。

    下一篇將是對該項目的測試

    ?

    總結

    以上是生活随笔為你收集整理的用Java做一个基于Swing的多人网络聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。