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

用Java编写简单聊天程序。 设计要求:要求实现的基本功能有: 1)一个发送方,一个接收方 2)能显示聊天历

发布网友 发布时间:2022-05-04 23:37

我来回答

2个回答

热心网友 时间:2023-10-09 03:09

主聊天方
package com.king.Char;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class MainChat extends Frame {
TextField tf = new TextField();
TextArea ta = new TextArea();
//为了方便在没连接是时候可以拿到这个socket 设置为成员变量
Socket s=null;
DataOutputStream dos=null;
public void chatLaunch() {
this.setLocation(500, 300);
this.setSize(500, 300);
this.setVisible(true);
this.setResizable(false);
this.add(tf, BorderLayout.SOUTH);
this.add(ta, BorderLayout.NORTH);
pack();
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
disconnect();
System.exit(0);
}
});
tf.addActionListener(new myActionListener());
// new myListener()是监听对象 就是keyLISTENER 就是KeyAdapter 就是myListener
this.addKeyListener(new myListener());
//调用连接服务器
connectServlet();

}
// KeyAdapter实现了keyLISTENER接口
private class myListener extends KeyAdapter {
// 重写需要的方法
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch (key) {
case KeyEvent.VK_ENTER:
ta.setText("i am qiang");
break;
}
}
}
private class myActionListener implements ActionListener {
// 就只有一个方法void actionPerformed(ActionEvent e) 发生操作时调用。
public void actionPerformed(ActionEvent e) {
// trim()去掉空格
String str = tf.getText().trim();
ta.setText(str);
tf.setText("");
try {
// InputStreamgetInputStream() 返回此套接字的输入流。 把str的数据流写到socket里 然后连接 服务器就可以取得数据流
dos.writeUTF(str);
dos.flush();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public void connectServlet() {
try {
s = new Socket("localhost", 8888);
dos=new DataOutputStream(s.getOutputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void disconnect(){
try {
dos.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
new MainChat().chatLaunch();
}
}

服务方:
package com.king.Char;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServer {
public static void main(String[] args) {
boolean statred = false;
try {
ServerSocket ss = new ServerSocket(8888);
statred = true;
while (statred) {
boolean bConnection = false;
Socket s = ss.accept();
bConnection = true;
DataInputStream dis = new DataInputStream(s.getInputStream());
while (bConnection) {
//.readUTF()会阻塞 一直等待接收数据 使用线程解决
String str = dis.readUTF();
}
dis.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//不用为类服务 写内部类即可
class myThread implements Runnable{
//每个客户端有自己的相关信心
private Socket s;
private DataInputStream dis=null;
public void run(){
}
}
}

辛苦我了追问运行起来有N个class, interface或enum是怎么回事?

追答这里就两个类 其他是内部类
MainChat 和ChatServer这两个类

热心网友 时间:2023-10-09 03:10

用socket~~~~~~~~~~~~~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见老婆光脚踩谷子 王者荣耀国服中,不论进入游戏还是没开始游戏,所有玩家发送的任何消息... 我的滴滴开空调活动怎么没了 为什么腾讯视频显示还是要流量看 没有联通中国结标志 电脑不能装win7买电脑时他们说只能装win10系统不能装win7 英雄联盟手游 手机lol游戏盒子现在叫什么? 英雄联盟手机盒子看不了比赛记录 手游英雄联盟视频在哪里看手机英雄联盟盒子在哪看我游戏中录的视频 英雄联盟盒子看视频只有声音没有画面,不是网速的问题,也不是电脑卡,是... 为什么英雄联盟盒子没发看视频 灭火器年检和维修有什么不同 比较紧张刺激的电影有哪些? 求推荐几部好看恐怖片,要紧张刺激的,越恐怖越好。 请问有哪些紧张刺激的电影可看。 有没有紧张刺激的电影? 紧张刺激的电影有哪些 迄今为止看过的最强动作片 紧张刺激 暗藏杀机……是哪部电影 奇迹圣导师加点分析 如何使攻击最大化 奇迹MU私服圣导师加点法 红包3.33什么意思 MU奇迹圣导加点,请MU奇迹团指点迷津。 未见面相亲男妇女节给发3.33红包是什么意思 奇迹圣导是怎么加点的? 请问奇迹圣导师怎么加点,用什么技能连击 她给我发3.33的红包我怎么回 女人回发红包3.33红包代表什么意思 奇迹MU圣导师怎么加点?总共17500点` 一个女的给我发了微信红包3.33元是什么意思 红包3.33是什么意思朋友在微信给我发了3.33红包,是什么意思 情人节情人发个红包给我,3.33是啥意思 用JAVA编写一个客户机服务器聊天程序 关于JAVA swing编写聊天程序 用JAVA编写的简单的聊天工具程序及解释 简单网络聊天程序 java程序代码 求一个JAVA编的聊天小程序。 如何使用java编写一个聊天小程序,要求使用图形用户界面,求高手!非常感谢! 怎样用窗口程序做Java socket编写聊天程序? 跪求一个Java编写的多人聊天程序源代码 何谓剩余价值?剩余价值是如何创造出来的? 如何用药,日光性皮炎还是激素依赖性皮炎? 日光性皮炎抹什么药 有疙瘩 请问这是日光性皮炎吗 一直都有 但是夏天会比较严重 瘙痒 999皮炎平对日光性皮炎有效吗 考试大概考了多少分 高考考了多少分? 考了多少分英语怎么说 考了多少分 你考试考了多少分 语文考了多少分? 高考出分数了,都考了多少分