利用JAVA实现简单聊天室
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用JAVA实现简单聊天室
1.设计思路
Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。而且,Java 很小,整个解释器只需215K的RAM。
因此运用JAVA程序编写聊天室,实现简单聊天功能。程序实现了聊天室的基本功能,其中有:
(1)启动服务器:实现网络的连接,为注册进入聊天室做准备。
(2)注册登陆界面:填写基本信息如姓名等,可以供多人进入实现多人聊天功能。
(3)发送信息:为用户发送信息提供平台。
(4)离开界面:使用户退出聊天室。
(5)关闭服务器:断开与网络的连接,彻底退出聊天室。
2.设计方法
在设计简单聊天室时,需要编写5个Java源文件:、、、、。
3 程序功能图及程序相关说明
(1)主功能框图
(2) 聊天室基本功能表
4.程序代码是说明
程序中引入的包:package Chat; import .*;
import .*;
import .*;
import .*;
import .*;
(1)服务器端代码中用户自定义类:
类名:Server
作用:服务器启动
继承的接口名:ActionListener
public class Server implements ActionListener{
定义的对象:
count 计结果与分析
5个Java源文件:、、、、。分别编译这5个Java源文件,或运行“javac *.java”命令,编译全部的源文件,然后运行连接服务器的主类,即运行Server类。连接完毕后在运行注册的主函数类,即运行LogIn类。
首先运行启动服务器的文件,运行结果如下:
图1服务器启动成功
结果分析:在进入聊天室之前必须先启动服务器,实现服务器端的连接为用户的登录打开“窗口”。
其次运行用户注册登录文件,运行结果如下:
图2用户登陆界面
结果分析:添加用户信息,输入用户姓名,为用户进入聊天室提供关口。并且利用以下语句实现如图3的界面 JLabel title=new JLabel("免注册版"); JLabel name=new JLabel("输入姓名");
JButton send=new JButton("进入");
添加注册信息后点击“进入”按钮,结果如图3
图3显示用户已登录
结果分析:当服务器启动用户完成信息注册时,在服务期端的界面中会显示当前在线的人员,并且提示客户已连接到服务器,可以进行聊天行为。
图4显示聊天内容
结果分析:多个用户进入聊天室之后,用户可以在发送信息的文本框里填写自己的内容,点击“发送信息”按钮,信息会出现在上方的区域内,在界面的右方还可以显示在线人员的姓名,另在线用户可以知道有谁在聊天室内。
聊天结束点击“离开”按钮,结果如图5所示:
图5离开聊天室
点击服务器中的“停止”按钮,结果如图6.图7.所示:
图6 点击“停止”按钮
图7终止与服务器端连接
结果分析:用户聊天结束点击“离开”按钮之后会在服务器端的界面上自动显示该用户已离开,提时、示服务器执行相关行为。
离开界面:使用户退出聊天室;关闭服务器:断开与网络的连接,彻底退出聊天室。
6.语句实现
(1)
package Chat;
import .*;
import .*;
import .*;
import .*;
import .*;
public class Server implements ActionListener{
int count=0;
Vector soconly=new Vector();
HashMap sockets=new HashMap();
HashMap socket_thread=new HashMap();
ServerSocket serversocket;
JFrame frame;
JTextArea area=new JTextArea();
JPanel panel=new JPanel();
JButton start=new JButton("启动");
JButton stop=new JButton("停止");
public Server() {
(start);
(stop);
(panel,;
(area,;
();
center();
;
(true);
(this);
(this);
"new");
}
public void center(){
Toolkit toolkit=();
Dimension e=();
int x=2-(int)().getWidth()/2);
int y=2-(int)().getHeight()/2);
(x,y);
}
public void actionPerformed(ActionEvent e){
JButton btn=(JButton)();
if(btn==start){
serverRun serverrun=new serverRun();
"gogo");
();
}
if(btn==stop){
try{
Iterator i = ();
while ()) {
Socket s = (Socket) ();
ObjectOutputStream out = new ObjectOutputStream(s.
getOutputStream());
Objecting bj=new Objecting();
("系统消息-----服务器马上关闭!!!!!!请马上关闭客户端"); }
count++;
if(count==2){
(0);
}
(frame,"已通知客户端,请再次点击关闭按钮关闭");
}catch(Exception ex){();}
}
}
class serverRun extends Thread{
public void run(){
try{
"开始SERVERRUN");
serversocket=new ServerSocket(55555);