问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

求一个类似QQ或者其他的聊天程序源代码,JAVA的

发布网友 发布时间:2022-08-20 19:14

我来回答

2个回答

热心网友 时间:2023-11-09 03:36

简单得很的那种要不要?就像用来应对考试一样。

import java.io.*;
import java.net.*;
import java.util.*;
public class ChatServer {
boolean started = false;
ServerSocket ss = null;
List<Client> clients = new ArrayList<Client>();
public static void main(String[] args) {
new ChatServer().start();
}
public void start() {
try {
ss = new ServerSocket(8888);
started = true;
} catch (BindException e) {
System.out.println("端口使用中....");
System.out.println("请关掉相关程序并重新运行服务器!");
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
}
try {
while(started) {
Socket s = ss.accept();
Client c = new Client(s);
System.out.println("a client connected!");
new Thread(c).start();
clients.add(c);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

class Client implements Runnable {
private Socket s;
private DataInputStream dis = null;
private DataOutputStream dos = null;
private boolean bConnected = false;

public Client(Socket s) {
this.s = s;
try {
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
bConnected = true;
} catch (IOException e) {
e.printStackTrace();
}
}

public void send(String str) {
try {
dos.writeUTF(str);
} catch (IOException e) {
e.printStackTrace();
}
}

public void run() {
try {
while(bConnected) {
String str = dis.readUTF();
System.out.println(str);
for(int i=0; i<clients.size(); i++) {
Client c = clients.get(i);
c.send(str);
}
}
} catch (EOFException e) {
System.out.println("Client closed!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(dis != null) dis.close();
if(dos != null) dos.close();
if(s != null) {
s.close();
//s = null;
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
}

}
}
客户端,开两个就能聊了……
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class ChatClient extends Frame {
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
private boolean bConnected = false;
TextField tfTxt = new TextField();
TextArea taContent = new TextArea();
Thread tRecv = new Thread(new RecvThread());
public static void main(String[] args) {
new ChatClient().launchFrame();
}

public void launchFrame() {
setLocation(400, 300);
this.setSize(300, 300);
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
pack();
this.addWindowListener(new WindowAdapter() {

@Override
public void windowClosing(WindowEvent arg0) {
disconnect();
System.exit(0);
}

});
tfTxt.addActionListener(new TFListener());
setVisible(true);
connect();

tRecv.start();
}

public void connect() {
try {
s = new Socket("127.0.0.1", 8888);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
System.out.println("connected!");
bConnected = true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

public void disconnect() {
try {
dos.close();
dis.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}

}

private class TFListener implements ActionListener {

public void actionPerformed(ActionEvent e) {
String str = tfTxt.getText().trim();
tfTxt.setText("");

try {
dos.writeUTF(str);
dos.flush();
} catch (IOException e1) {
e1.printStackTrace();
}

}

}

private class RecvThread implements Runnable {

public void run() {
try {
while(bConnected) {
String str = dis.readUTF();

taContent.setText(taContent.getText() + str + '\n');
}
} catch (SocketException e) {
System.out.println("bye!");
} catch (IOException e) {
e.printStackTrace();
}

}

}
}

热心网友 时间:2023-11-09 03:36

你好,这个代码实现后,是2个客户端聊天呢还是客户端和服务器端聊天,急问!
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
没有文化能进的了集团公司吗? 有没向我们没有文的人可以上班吗? 去公司上班应该怎么做?(没有在公司上过班,没有学历)? 没文化想去公司上班该怎么办. 内心的底子只有4年在外的社会经验。_百度... 想去企业上班但是又没有文化该怎么办 成都九号公馆房价是多少钱 九号公馆房价是多少钱一平 gucci12y170可以穿吗 薄野景行为什么不老 薄野景行到底是男是女?其实她是女的,文章最后这样子写到:薄野非凡 qq随意聊的VB源代码是怎样的? 老鼠老鼠老鼠 猫最怕什么 如果一个人一直给你灌输一个思想 你听多了会不会误以为真 非常可怕的人心定律给我几秒老鼠老鼠老鼠老鼠老鼠请问猫害怕什么回答我你想的 求用excel做试算平衡表等财务报表 会计报表数据转化到统计报表,舍位平衡该如何处理? 若通过EXCEL2010处理,如何进行设置使得到最优数据? oppoa32刷机教程然后开机要密码吗 我本来是使得我的旧手机号,绑定我的QQ号,我现在换手机号了,发不过来,验证码怎么办? 代替卧槽的口头禅有哪些? 上饶市万年县怎么加入美国外卖送餐? 13岁孩子还能买教育基金险吗 DDR3 1866Hmz 1600Hmz 配英特尔的哪款cpu? 骇客神条ddr3 1866怎么样 条件反射的建立对于幼儿的心理发展及教育有何意义? 条件反射的作用是什么学前儿童心理学? 绍兴哪里有卖咸金桔呀? 在哪里有咸金桔卖 和女生发生肢体接触,如何让她不反感? 连女生胸部都没见过我,是不是太放弃了?!? 连女生胸部都没见过我,是不是太放弃了 为什么有很多男人都很嫌弃大龄剩女? 国家助学贷款还款常见问题:如何给支付宝账户充值? 我的是用手机登录助学贷款的账户通过银行卡充值,但是充值不了,上面显示账户余额支付功能已关闭,咋办? 怀孕前三个月HCG数据多少算正常? 怀孕三周HCG多少正常 iptables 阻止MAC上网 linux iptables 禁止主机mac使其不能上网? 在linux上的iptables防火墙上怎么禁止MAC地址的绑定状态 linux iptables 禁止某个MAC来骚扰服务器应该怎么写 软件路由器如何限制MAC使其只能在指定时段内上网? 问一下LINUX 的iptables 关闭mac命令 iptables能过滤MAC地址么 海南健康管理职业学院怎么样 海南健康管理技术学院录取了没 鼻子黑头白头怎么去除最有效 微信怎样让个人主页不显示个人相册 北京户口在外地可以签注港澳通行证吗 北京户口能在外地办签证和港澳通行证么? 在ppt一页里插入视频,如何让它和ppt的其他页一起循环播放?ppt是用于展示的,要求不断循环播放 开店宝收款语音怎么设置- 问一问 我的世界红石陷阱怎么造
  • 焦点

最新推荐

猜你喜欢

热门推荐