问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为java聊天室代码加详细注释,并说明设计思路。好的加100分。

发布网友 发布时间:2022-04-20 00:49

我来回答

3个回答

热心网友 时间:2022-04-20 02:18

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;
}
}
}
}

热心网友 时间:2022-04-20 03:36

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对象
frame.setSize(400,300); //设置fram大小
jta=new JTextArea();
jta.setEditable(false);
jtf=new JTextField();
jtf.addActionListener(new ActionListener(){ //注册*

public void actionPerformed(ActionEvent arg0) {
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); //设置端口
in=new BufferedReader(new InputStreamReader(s.getInputStream())); // 创建对象in 读写用的
out=new PrintWriter(s.getOutputStream()); //创建输出流对象out
} 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");
} 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();
}
}
//服务器端的
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);
List list=new ArrayList(); //创建数组
while(true){ //开启多线程
Socket s=ss.accept();
list.add(s);
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) {
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(){
while(true){
try {
String str=in.readLine();
if (str==null) return;
Iterator it=list.iterator();
while(it.hasNext()){
Socket socket=(Socket)(it.next());
PrintWriter o=new PrintWriter(socket.getOutputStream());
o.println(str);
o.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
return;
}
}
}
}

热心网友 时间:2022-04-20 05:11

自己写……
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
史上最全ETF全解 证券ETF是深市的吗 怎样把莲藕肉丸子做的好吃? 高三语文小说赏析小说形象分析与答题技巧 人物形象题答题技巧 借助什么分析小说的人物形象 脖子旁边疼是什么原因 在群里不是好友怎么把群里人建另一个群 蛇床子的药理作用 炒蛇床子和生蛇床子有什么区别 下载内容如何删除 环境工程中污泥脱水干化的方法有哪些啊? 污泥处理的要求 污泥干化技术使用什么标准 污泥干燥中干化和半干化的区别 中国城建院 污泥标准 开工作室10十台电脑一条网线 同一个IP地址封号 怎么用代理防止封号啊 电脑U盘重装 具体 操作. 我用的是一键工作室的软件... 如果一个工作室只有六台电脑,怎样可以实现共享文件给其它电脑,求大神教 开了一个工作室,用什么配置的电脑可以 工作室电脑比较多怎么快速知道那个电脑音响发出的声音 工作室的电脑应该如何优化? 工作室中一台电脑如何实现多个系统多个显示器一起开? 工作室电脑如何配置 梦幻西游工作室10台电脑纯手工操作怎么做? 工作室电脑要求尽量多开求高手指点 如何用小路工作室重装电脑. 游戏工作室是怎么用一台电脑控制多台机器的 而且还能做到一点都不卡 本人游戏工作室,20台电脑,20根网线,怎么才能装个远程控制的软件,可以方便管理其他的电脑? 游戏工作室怎么实现用一台电脑同时控制多台电脑,我说的时同时控制,把一台电脑变成主机 信义玻璃厂待遇怎么样 如何在主题活动中培养幼儿的环保意识? 用手机赚钱可以做哪些小生意?求介绍。 现在做什么生意可以在手机上做的, 有没有,在手机上就能赚钱的小生意。 求介绍 做一名老师在可以在手机做上生意吗? 想做点小本生意,但天天在家看着手机,啥也找不到 手机店还可以做别的什么生意吗 magicbook pro和matebook D15哪个好,两者相差500块钱,平时办公用? 如果一个女孩子对我说“我需要你”是什么意思?? 女生发我一直需要你怎么回? 乘法分配律的教学活动让学生积累了哪些基本活动经验? 女朋友说要你有什么用不能帮我分担这是什么意思? 苏教版乘法分配律不用情境图教案 如何在数学练习课《乘法分配律》利用信息技术 女朋友对你说要你有什么用的话她心里还有你吗? 女朋友说:要你好好的。怎么回复? 初中数学是如何讲解乘法分配律 女朋友说想要你宠我怎么回? 如何让学生更深刻的理解乘法分配律