2005年1月第l期
实验科学与技术
基于Java的聊天室+
DeVelopmentandResearhofChatRoomwithJaVa
白雪”
陈广山大连610064)
(辽宁师范大学
摘要:对在一个具体的B/S体系结构,提出了一种基于Java的聊天室的分析与设计方法。使用TCP/IP编程和Java界面编程,结合基于Java的输入输出数据流技术,对消息进行管理和发送,并且利用Windows的多线程技术对程序的运行速度进行了改善,为其他程序作聊天室无法解决的控制
问题提出了较好的解决方案。关键词:Java;TCP/IP;数据流;多线程
中图分类号:TP312JA
文献标识码:B
文章编号:1672—4550(2005)0l一0029一03
”l℃fVlP。
1
概述
聊天室在网络中的应用是极其广泛的,用ASP
scrvcf(聊天室服务器)
创建scocrsocket对象
在某端口提供监听服务
l
开发聊天室的方法也被越来越多的人所掌握。随着Java的崛起,以其简单、结构中立、可移植性好、多线程等特点被广泛应用于Intemet环境的系统开发之中。由于使用Java开发的聊天室比较少见,所以笔者尝试设计开发了基于Java的聊天室。
I
等待来自clicnt端的服务请求
C1knt(聊天室亨户端’
、
接收来dclicnt端的服务请求.譬翼
用返回的Sockct建立连接
l
通过向sockct读写数据,与CIicnt端通信数据通信(…??)拆除连接(…一)
通过向L雠读写数据,
2基于Java的聊天室的分析与设计
2.1工作原理设计Java聊天室是指用
Java技术开发基于B/S结构的网络聊天室,主要包括服务器端程序(serv.er)和客户端小程序(client)的设计。服务器端与客户端
工作原理如图1所示:2.2功能的模块化
设计 2.1.1
I
关闭Sockct,结束与当前Clicm的通信,等待其他请求
I
关闭scrvHSock烈对象。结柬监听服务
图l服务器端与客户端工作原理
果为退出消息,则在在线用户向量中删除该用户。同时,服务器也具有显示在线用户名和IP地址的功能,并能实施对用户进行在线的监控,通过发送消息示警,将违反规定的用户踢出聊天室。
2.2.2
网络聊天室服务器端设计
服务器的作用是创建ServerSocket对象对端口5000进行监听,以等待客户端的请求;如果收到客户端发出的登录请求,服务器即为每一个申请登录的客户建立一个连接(Socket),记录下客户的IP地址和登录名称,并将客户信息保存到在线用户向量中。服务器还负有对客户消息进行检测的职责,如果是普通消息,则将消息发送给所有在线用户;如
网络聊天室客户端设计
客户端的主要功能是提供聊天服务,该设计是通过在IE浏览器中加载Java小程序实现的,用户输人登录名称登录网络聊天室服务器,登录时向服务器发送登录消息,与Java小程序指定的IP地址和端口的服务器建立连接,登录后便可以通过向服务器端发送和接收普通消息,同所有在线用户进行
?
[收稿日期]2004—06—2l;
[作者简介]白
[收稿日期]2004一09—23
??
雪(1970一),女,硕士,实验师,研究方向:
计算机网络安全。
万方数据
一29—
Experiment
Science&Technology
2005年1月第l期
即时
通信。客户端结束通信的方式有两种:第一种是客户端结束浏览器程序(结束Java小程序),同时向服务器端发送退出信息;第二种是接收到服务器端发送的退出程序,自动结束与服务器端的连接(被
踢出网络聊天室)。
每个用户建立一个senre以onn类的实例。然后serverConn类向聊天室客户端发送信息,并且通过实例化userThread类,为用户开启一个线程。线程
类use棚?read为读取聊天室客户端发送的信息,并
且对信息进行检测,根据信息种类的不同,对信息进行不同的处理。
程序1:
publicclass
server
网络聊天室的客户端与服务器端的信息模块图,如图2所示。
客户端
extendsFrameimplementsAc—
tion“stener
{
protectedSenrersocketlistenSocket;
senrelConnnewConn=null:
Vector
users:
publicvoid
waitForClients()
{
socketnewClient=listenSocket.newConn
=new
accept
();
newCli—
sen,e尤onn
(this,
ent);
users.
addElement(newConn);
}
图2网络聊天室的客户端与服务器端的信息模块图
3关键技术及解决
方案 系统开发中所涉及的Java关键技术主要为TCP/IP编程技术、Java数据流技术、Java多线程技术、Java界面编程技术等。使用的类主要为:①java.awt,用于聊天室中界面和按钮的设计;②ja.va.net,用于聊天室中的TcP/IP编程;③java.氓主要用于聊天室的数据流的输人和输出;④java.applet,用于聊天室编写中的小程序的使用与调用;(勤ava.1ang,用于对聊天室程序中的多线程的控制;⑥java.util,用于对聊天室中的用户信息的存储与管理。
3.1接口的实现
}
3.3客户端技术在客户端,本文使用的聊天室客户
程序的主类是clientApplet,客户程序的起点,主要定义了聊天室客户程序的用户界面,并且建立聊天室客户端到聊天室服务器端的连接(Socket),为连接指定IP地址和端口号,向聊天室服务器端发送登录信息,初始化client类,建立从聊天室客户端到聊天室服务器端的连接