資源簡介
基于C/S端的簡易聊天程序,該聊天系統,就是服務器來提供服務端連接響應,客戶端主動的發起連接請求。當多個用戶同時連接到服務器時,經由服務器的接收與轉發便可以實現客戶之間的通信。
對于整體系統的流程,也是分為兩部分,即客戶端的發起請求,服務器響應請求。首先是客戶端設置所想要連接的服務器,然后客戶端就會根據設置的服務器IP地址,向服務器發起建立連接請求。而服務器端是始終在監聽網絡狀態的,主要檢測到有一個連接請求,那么服務器就會給當前的發起端分配一個服務線程,用于處理它的各種請求。
(1)一個服務器與多個客戶端,其中服務器負責消息中轉。
(2)實現客戶端群發消息。
(3)客戶端與客戶端之間私聊消

代碼片段和文件信息
package?chat;
import?javax.swing.*;??
import?javax.swing.border.*;??
import?javax.swing.event.*;??
import?java.util.*;??
import?java.util.concurrent.*;??
import?java.io.*;??
import?java.net.*;??
import?java.awt.*;??
import?java.awt.event.*;??
??
public?class?Client?{??
????//UI??
????private?Jframe?frame;??
????private?JPanel?settingPanel?messagePanel;??
????private?JSplitPane?centerSplitPanel;??
????private?JScrollPane?userPanel?messageBoxPanel;??
????private?JTextArea?messageTextArea;??
????private?JTextField?nameTextField?ipTextField?portTextField?messageTextField;??
????private?JLabel?messageToLabel;??
????private?JButton?connectButton?disconnectButton?sendButton;??
????private?JList?userList;??
??
????//Model??
????private?DefaultListModel?listModel;??
????private?User?me;??
????private?ConcurrentHashMap?onlineUsers?=?new?ConcurrentHashMap();??
????private?String?sendTarget?=?“ALL“;??
??
????//Socket??
????private?Socket?socket;??
????private?PrintWriter?writer;??
????private?BufferedReader?reader;??
??
????//Thread??
????private?MessageThread?messageThread;??
??
????//Status??
????private?boolean?isConnected;??
??
????public?Client()?{??
????????initUI();??
????}??
??
????private?void?connect()?{??
????????int?port;??
??????????
????????try?{??
????????????port?=?Integer.parseInt(portTextField.getText().trim());??
????????}?catch(NumberFormatException?e)?{??
????????????showErrorMessage(“端口號必須為整數!“);??
????????????return;??
????????}??
??
????????if?(port?1024?||?port?>?65535)?{??
????????????showErrorMessage(“端口號必須在1024~65535之間“);??
????????????return;??
????????}??
??
????????String?name?=?nameTextField.getText().trim();??
??
????????if?(name?==?null?||?name.equals(““))?{??
????????????showErrorMessage(“名字不能為空!“);??
????????????return;??
????????}??
??
????????String?ip?=?ipTextField.getText().trim();??
??
????????if?(ip?==?null?||?ip.equals(““))?{??
????????????showErrorMessage(“IP不能為空!“);??
????????????return;??
????????}??
??
????????try?{??
????????????listModel.addElement(“所有人“);??
??
????????????me?=?new?User(name?ip);??
????????????socket?=?new?Socket(ip?port);??
????????????reader?=?new?BufferedReader(new?InputStreamReader(socket.getInputStream()));??
????????????writer?=?new?PrintWriter(socket.getOutputStream());??
??
????????????String?myIP?=?socket.getLocalAddress().toString().substring(1);??
????????????//System.out.println(myIP);??
????????????sendMessage(“LOGIN@“?+?name?+?“%“?+?myIP);??
??
????????????messageThread?=?new?MessageThread();??
????????????messageThread.start();??
????????????isConnected?=?true;??
??
????????}?catch(Exception?e)?{??
????????????isConnected?=?false;??
????????????logMessage(“客戶端連接失敗“);??
????????????listModel.removeAllElements();??
????????????e.printStackTrace();??
????????????return;??
????????}??
??
????????logMessage(“客戶端連接成功“);??
????????serviceUISetting(i
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-04-11?12:19??chat-chat\
?????文件?????????301??2018-04-11?12:19??chat-chat\.classpath
?????文件?????????385??2018-04-11?12:19??chat-chat\.project
?????目錄???????????0??2018-04-11?12:19??chat-chat\.settings\
?????文件?????????598??2018-04-11?12:19??chat-chat\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2018-04-23?12:45??chat-chat\bin\
?????目錄???????????0??2018-04-23?12:45??chat-chat\bin\chat\
?????文件?????????657??2018-04-23?12:45??chat-chat\bin\chat\Client$1.class
?????文件?????????657??2018-04-23?12:45??chat-chat\bin\chat\Client$2.class
?????文件?????????737??2018-04-23?12:45??chat-chat\bin\chat\Client$3.class
?????文件?????????736??2018-04-23?12:45??chat-chat\bin\chat\Client$4.class
?????文件?????????763??2018-04-23?12:45??chat-chat\bin\chat\Client$5.class
?????文件????????1880??2018-04-23?12:45??chat-chat\bin\chat\Client$6.class
?????文件????????4021??2018-04-23?12:45??chat-chat\bin\chat\Client$MessageThread.class
?????文件????????9773??2018-04-23?12:45??chat-chat\bin\chat\Client.class
?????文件?????????657??2018-04-23?12:45??chat-chat\bin\chat\Server$1.class
?????文件?????????657??2018-04-23?12:45??chat-chat\bin\chat\Server$2.class
?????文件?????????736??2018-04-23?12:45??chat-chat\bin\chat\Server$3.class
?????文件?????????736??2018-04-23?12:45??chat-chat\bin\chat\Server$4.class
?????文件?????????763??2018-04-23?12:45??chat-chat\bin\chat\Server$5.class
?????文件????????5448??2018-04-23?12:45??chat-chat\bin\chat\Server$ClientServiceThread.class
?????文件????????2781??2018-04-23?12:45??chat-chat\bin\chat\Server$ServerThread.class
?????文件????????8761??2018-04-23?12:45??chat-chat\bin\chat\Server.class
?????文件????????1138??2018-04-23?12:45??chat-chat\bin\chat\User.class
?????目錄???????????0??2018-04-11?12:20??chat-chat\src\
?????目錄???????????0??2018-04-11?12:23??chat-chat\src\chat\
?????文件???????14947??2018-04-11?12:30??chat-chat\src\chat\Client.java
?????文件???????16175??2018-04-11?12:39??chat-chat\src\chat\Server.java
?????文件?????????644??2018-04-11?12:21??chat-chat\src\chat\User.java
評論
共有 條評論