導航:首頁 > 編程語言 > java簡單聊天室

java簡單聊天室

發布時間:2025-08-23 08:45:15

Ⅰ 為java聊天室代碼加詳細注釋,並說明設計思路。好的加100分。

import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;//引入包。

public class ChatClient {
public static void main(String[] args) {
ChatClient cc = new ChatClient();
cc.receive();
}

JTextField jtf; // 文本條
JTextArea jta; //文本域。
Socket s; //客戶端
PrintWriter out; //輸出流
BufferedReader in; //輸入流

public ChatClient() {
JFrame frame = new JFrame("ChatClient");//窗口
frame.setSize(400, 300); //大小
jta = new JTextArea(); //文本域
jta.setEditable(false); //不可編輯
jtf = new JTextField();//文件條
jtf.addActionListener(new ActionListener() { //添加監聽。

public void actionPerformed(ActionEvent arg0) {
send(); //調用send()方法
}

});
frame.getContentPane().add(new JScrollPane(jta)); //添加滾動條
frame.getContentPane().add(jtf, "South"); //添加文本條
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關閉窗口。
frame.setVisible(true); //可顯示的。

try {
s = new Socket("127.0.0.1", 9000); //連接服務端 socket("主機名",埠號);
in = new BufferedReader(new InputStreamReader(s.getInputStream())); //建立輸入流
out = new PrintWriter(s.getOutputStream());//輸出流
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public void receive() { //接受服務端發來別的客戶端的信息。
while (true) {
try {
String text = in.readLine(); //讀一行
this.jta.append(text + "\n"); //jta 添加上讀入的。
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
}

public void send() { //發送消息
String text = this.jtf.getText(); //得到你輸入的消息
this.jtf.setText(""); //在文本域中顯示你輸入的消息。
out.println(text); //列印出。
out.flush(); //清空
}
}

Server端

import java.net.*;
import java.io.*;
import java.util.*;//引入包

public class ChatServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(9000); //建立服務端,埠號為9000
List list = new ArrayList(); //創建個List集合。
while (true) {
Socket s = ss.accept(); //等待客戶端的請求。
list.add(s); //把每一個client都add到集合中去。
Thread t = new ServerThread(s, list); //線程。
t.start(); //啟動。
}
}
}

class ServerThread extends Thread {
Socket s;
List list;
BufferedReader in;
PrintWriter out;

public ServerThread(Socket s, List list) { //構造。傳入socket和list。
this.s = s;
this.list = list;
try {
in = new BufferedReader(new InputStreamReader(s.getInputStream())); //輸入流
out = new PrintWriter(s.getOutputStream()); //輸出流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void run() { //必須實現其run()方法。
while (true) {
try {
String str = in.readLine(); //得到client端的message。
if (str == null) //如果沒有消息就返回。
return;
Iterator it = list.iterator(); //遍歷list。
while (it.hasNext()) { //如果list有下一個
Socket socket = (Socket) (it.next()); //因為list中都是存的socket
PrintWriter o = new PrintWriter(socket.getOutputStream()); //輸出流
o.println(str); //輸出
o.flush(); //清空
}
} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
return;
}
}
}
}

Ⅱ 怎麼實現java一對一聊天室可以介紹一下嗎

要實現 Java 的一對一聊天室,可以使用 Socket 編程實現基於 TCP 協議的通信。

以下是一些大致的步驟:

Ⅲ 如何用java做一個聊天小程序 要求使用圖形用戶界面,可以實現一個聊天室中多人聊天,也可以兩人私聊,

給你一個簡單的實現吧,注意一定要先運行MyServer.java

//MyCilent.java
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyClient extends JFrame implements ActionListener{
JTextField tf;
JTextArea tx;
JButton bt;
PrintWriter out;

public MyClient(){

tf=new JTextField(20);
tx=new JTextArea();
tx.setLineWrap(true);
tx.setWrapStyleWord(true);
JPanel pan=new JPanel();
JScrollPane jsp=new JScrollPane(tx);
add(jsp,"Center");
bt=new JButton("SEND");
bt.addActionListener(this);
pan.add(tf);
pan.add(bt);
add(pan,"South");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

setTitle("THE CLIENT");
setSize(400,300);
setVisible(true);

try{
Socket socket=new Socket("127.0.0.1",1680);

out=new PrintWriter(socket.getOutputStream(),true);
InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader sin=new BufferedReader(in);

String s;
while(true){
s=sin.readLine();
tx.append("#Server Said#: "+s+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt){
tx.append("@Client Said@: "+tf.getText()+"\n");
out.println(tf.getText());
tf.setText("");
}
}

public static void main(String[] args){
MyClient mct = new MyClient();
}
}

//MyServer.java

import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyServer extends JFrame implements ActionListener{
JTextField tf;
JTextArea tx;
JButton bt;
JScrollPane jsp;
JPanel pan;
PrintWriter out;

public MyServer(){
tx=new JTextArea();
tx.setLineWrap(true);
tx.setWrapStyleWord(true);
jsp=new JScrollPane(tx);
tf=new JTextField(20);
bt=new JButton("SEND");
bt.addActionListener(this);
pan=new JPanel();
pan.add(tf);
pan.add(bt);
add(pan,"South");
add(jsp,"Center");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

setTitle("THE SERVER");
setSize(400,300);
setVisible(true);

try{
ServerSocket server = new ServerSocket(1680);
Socket socket = server.accept();

InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader sin=new BufferedReader(in);
out=new PrintWriter(socket.getOutputStream(),true);

while(true){
String s=sin.readLine();
tx.append("@Client Said@: "+s+"\n");
}

}catch(Exception e){
e.printStackTrace();
}

}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt){
String st = tf.getText();
tx.append("#Server Said#: "+st+"\n");
out.println(st);
tf.setText("");
}
}

public static void main(String[] args){
MyServer msr = new MyServer();
}
}

Ⅳ java 聊天室 源代碼

最簡單的聊天室

閱讀全文

與java簡單聊天室相關的資料

熱點內容
動態ip地址由dhcp伺服器來分配 瀏覽:800
aes128加密c 瀏覽:396
成為插畫師pdf 瀏覽:325
奧特曼系列ol為什麼進不去伺服器 瀏覽:742
盛世伺服器怎麼開啟 瀏覽:87
編譯安卓源碼修改定位 瀏覽:200
加密上市是什麼意思 瀏覽:802
一年程序員面試 瀏覽:174
多個jpg合成pdf 瀏覽:929
pdf轉word是圖片 瀏覽:941
程序員看不懂怎麼辦 瀏覽:273
linux操作系統題 瀏覽:767
單片機無符號數加法 瀏覽:229
應用隱藏加密怎麼關閉 瀏覽:269
汽車空調的壓縮機電線有什麼用 瀏覽:431
電腦加密圖片如何取消加密 瀏覽:342
慧凈電子51單片機視頻 瀏覽:345
javamap賦值 瀏覽:168
什麼app可以玩掌機游戲 瀏覽:48
java簡單聊天室 瀏覽:465