首 页 | 关于NIIT | 新闻中心 | 在线报名 | 加入我们
教育产品
就业项目实践课程
新技术提高课程
厂商认证课程
过级强化课程
博睿软件工程师
网络工程师课程
魔码游戏工程师
特许加盟
加盟指南
加盟流程
加盟申请表
常见问题
联系我们
院校合作
项目介绍
合作流程
合作申请表
常见问题
联系我们
企业培训
交付培训
公司培训计划
电子学习课程库
本地化服务和解决方案
就业动态
签约企业
就业明星
学员心声
就业安置
会员专区
证书查询
教师登陆
学生登陆
就业安置登陆
学员天地 
 

晒晒我用Java做的聊天室

 

     聊天室(chat)是人们现在在Internet上的重要的交流场所,随着Internet技术的不断发展,也出现很多不同种类的聊天室,用于方便人们的交流.甚至现在有了用于聊天的软件和专门的聊天服务器可见聊天室的作用之大.

      既然聊天室这么实用使用人群这么广,那么我也尝试着用Java语言编写了一个简单的聊天室晒晒聊天室。

      晒晒聊天室的基本功能包括用户登陆聊天室,客户端提示上线和下线信息,用户聊天的内容其他用户也可以共享看到.

      聊天室其实主要由2个部分组成,一是服务器端(Server)和一个客户端(Client),通过Socket套结字来创建服务器和客户端的连接,一般Socket类来初始化服务器名和端口号.我们有了连接后,就必须使用Java提供的2个对象(PrintStream,BufferedReader)来读入和写出Socket,这是使用Socket类提供的2个方法(getInputStream(),getOutputStream())来使的以上的2个对象分别从Socket中读数据和往Socket中写数据,使得用户发送的数据可以通过Socket来传输.如果我们想保存聊天记录则可以使用ObjectOutputStream对象的writeObject() 方法来把内容写入文件,以便保存。

         下面是晒晒聊天室的基本功能:

         1:用户登陆:(用户填写一个呢称和选择自己的性别,单击确定便可以登陆进聊天室主界面,下图为用户登陆的JFrame窗体)

        

里面包括了一些的基本验证功能,当用户把昵称和性别写好之后就通过(DataInputStreamDataOutputStream)这2个对象把昵称和性别写入Socket.并初始化为新用户.

         2:聊天面板:(新用户进入提示,用户下线提示,发表信息的共享,下面为聊天室的主界面,下图为聊天主JFrame窗体)

        

这是gaga用户登陆后窗体的样式,在本窗体中实现主要是通过一个Vector来保存用户的昵称和性别,并将其绑定给JList这个控件。当用户退出的时候我就将该面板的相应的在面板上显示该用户下线的提示信息,并且把Vector同步动态数组中的该用户Remove.下面的图为gaga用户下线的状态.

3:开启服务器端(系统关键的组成部分,用于接收和转发来自客户端的内容,下面的图为服务器启动的时候的状态)

        

服务器端不需要做成客户端那样的JFrame面板,用一个Main函数直接加载,通过服务器类的构造函数来创建端口,并创建线程,使得使用相同端口的客户端可以连接到服务器,在通过start()方法来启动服务器,使服务器开始为客户端服务.这是我们在线程的run()方法中为每一个用户创建自己的线程,因为我们的服务器是多线程的,服务于全体用户的.在每个用户的单一线程中我们设计个死循环让服务器不断的为此用户服务,既然是死循环,我们就必须显式的释放其套接字,因为每个线程都占有一定的内存,要不在finally中释放的话,用户多起来的时候很有可能把服务器拖垮.

4:关闭服务器(服务器关闭后,客户端将不会正常运行,所以我们也提示客户端,使用户知道服务器正在维护.下面的图为服务器停机时候的图)

        

当服务器停机的时候我们就显示相应的提示信息已经与服务器端开,调用Vector同步动态数组的removeAllElements()方法清空当前的Vector,使得JList控件清空.

结尾:

晒晒我的Java聊天室的基本功能,主要使用了JavaSocket编程来编写一个简单聊天室。

下面为使用的主要类和方法:

名称

使用类

使用方法

晒晒我的Java聊天室,所用的类和方法

Serversocket

accept()

Thread

Start()方法,run()

Socket

getInputStream(),getOutputStream()

BufferedReader

readline()

Vector

addElement(),removeElement(),removeAllElement()

ObjectInput/output-Stream

readObject(),writeObject()

 

 

 

 

 

 

 

 

 

 

 

 

以上便是晒晒我的Java聊天室。

 

 

 

                                                                                                 

 

 

 

姓名:顾挺

                                                                                                  软件学院:软开0533

                                                                                                  长沙民政职业技术学院

 
 
 
COPYRIGHT2008 NIIT.COM.CN NIIT Technology | 网站地图 | 版权申明 | 隐私条款 |
 
  我要报名
  招生问答
就业前景
中心查询
  宣传册下载
  博睿软件工程师宣...
过级强化课程
CompTIA系...
SUN系列课程
微软系列课程
就业项目实践课程...
特许加盟宣传册一
特许加盟宣传册二
院校联盟合作宣传...