用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的多人网络聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何将图片转换成excel?
- 下一篇: 新形黑猩猩脸部辨识系统 帮助保护朕亨公益