导航:首页 > 编程语言 > 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简单聊天室相关的资料

热点内容
如何知道服务器开通了什么端口 浏览:34
动态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赋值 浏览:169
什么app可以玩掌机游戏 浏览:48