课题名称基于Java的聊天系统设计及实现系别计算机技术与工程
专业计算机网络技术
班级09计网(1)班
姓名张超学号109104010042指导老师魏涛
江西蓝天学院一、实习目的
通过本次实习,能对公司产品、产品流程等达到熟练运用的地步,同时应该对JA V A 及其应用有一个非常清晰、明了的认识。本次的实习内容主要包括:对公司产品有一个初步的认识及确定其应该包括哪些模块实现什么功能;对JAV A的基础知识和理论学习;理论联系实际对JAV A Eclipse进行具体操作;学会用JAV A进行设计,JAV A初步程序设计。
二、实习时间
2011年11月28日至2012年2月10日
三、实习地点
南昌轩逸文化传播有限公司
四、公司简介及工作内容
南昌轩逸文化传播有限公司,是由数名南昌高校大学生自主创业而建立起来的广告公司,公司宗旨:企业宣传的荧屏,学生发展的平台。公司主要从事校园一系列广告业务,拥有南昌众多高校的校园广告资源,是一家由江西省市、高校与社会共同扶持起来的大学生实体企业。
刚来到轩逸文化传播有限公司,每个人彼此都不熟悉。和我相似,很多刚来的实习生不知道该干什么。公司为了让我们有一个交流的平台,促进新、老同事间的相互沟通,决定开发一个聊天系统,便于同事间的日常工作交流。
开发的聊天系统我们决定采用Java语言。由于本人在大学期间学习过Java程序的应用开发,所以被选入该系统的开发项目组。
五、实习内容
(一)基于Java的聊天系统的分析
1、需求分析
聊天系统不外乎两个方面,服务器端和客户端。
首先,服务器端的任务:
(1)服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。
(2)服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。
客户端应该完成的工作包括:(1)与服务器端建立通信通道,向服务器端发送信息。
(2)接收来自服务器的信息。
2、分析小结
相对服务器而言,客户端的任务更加简单。通过以上的简单分析可知,解决上述四个问题,即完成了该聊天系统的核心。
(二)开发环境工具
基于JA V A聊天系统的设计主要运用JA V A与语言与Socket类结合而开发。其开发的主要环境包括:
服务器端:(Windows平台)首先应有java环境jdk,建议采用jdk1.5以上,另外还需配置classpath环境变量,添加Hibernate运行所需要的jar包,本系统开发工具为MyEclipse5.5;
客户端:只要有java环境jdk就可以,建议jdk1.6。
(三)基于Java聊天系统的设计与实现
1、聊天系统总体设计要点
聊天系统的设计跟普通网站设计有着许多不同之处。普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。在设计聊天系统的过程中,必须要考虑以下几个设计要点:(1)实现思想
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
(2)服务器端工作流程
服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。
(3)客户端工作流程
客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket 来发送和接收数据就可以了。
2、功能模块划分
聊天系统工作原理图如图1所示。
图1聊天系统工作原理图
3、聊天系统各功能模块
(1)服务器程序模块
服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API 为处理套接口的通信提供了一个类java.net.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为9527,然后无限循环调用accept()方法接受客户程序的连接。
服务器程序启动结果如图5-2所示。
图2聊天服务器的实现图
服务器端程序的代码如下:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;import java.util.*;
import javax.swing.*;
import java.util.*;
//**聊天系统服务器程序
聊天系统服务器注册窗口如图3所示:
图3聊天服务器注册窗口
服务器注册功能代码如下:
//封装登录信息
class Customer implements Serializable
{
String custName;
String custPassword;
}
//封装注册信息
class Register_Customer extends Object implements java.io.Serializable {
String custName;
String custPassword;
String age;
String sex;
String email;
}
//用于发送聊天和在线用户的信息
class Message implements Serializable
{
Vector userOnLine;
Vector chat;}
//聊天信息序列化
class Chat implements Serializable
{
String chatUser;
String chatMessage;
String chatToUser;
boolean whisper;
}
//退出信息序列化
class Exit1implements Serializable
{
String exitname;
}
(2)客户端程序模块
客户端通过Socket(InetAddress,port)建立与服务器的连接。服务器与客户都通过构造ObjectInputStream,ObjectOutputStream来建立输入输出流,然后双方通过该输入输出流来相互传递信息,一旦收到客户方的连接请求,服务器accept()方法返回一个新建的Socket对象。客户端然后向服务器发送消息,比如文件传输等,服务器收到来自客户的请求后,针对不同的消息处理请求。客户端程序实现结果如图4所示。
图4客户端程序实现图
客户端程序的Socket工作过程如下:
a、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。
b 、数据通信:利用虚拟连接通道传送数据信息进行通道。
c 、关闭:通信结束时,再将所建的虚拟连接拆除。
其工作过程图如图5所示。
图5Socket 的工作过程图
客户端程序的主要代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.applet.*;
//*聊天系统客户端程序
////设置服务器IP 地址/
public class ChatClient {
public ChatClient(){
}
public static void main(String args[])
{
new Login();
}
}
//登录信息序列化1服务器socket
2监听4接收
5读
6写7关闭3客户端
etsocket
6写
5读
7关闭
String custPassword;
}
//注册信息序列化
class Register_Customer extends Object implements java.io.Serializable{ String custName;
String custPassword;
String age;
String sex;
String email;
}
//用于发送聊天和在线用户的信息
class Message implements Serializable{
Vector userOnLine;
Vector chat;
}
//聊天信息序列化
class Chat implements Serializable{
String chatUser;
String chatMessage;
String chatToUser;
boolean whisper;
}
//退出信息序列化
class Exit implements Serializable{
String exitname;
}
本次实习中,通过java语言实现了简单的实时聊天功能,经过细心的调试和排错解决了绝大部分的问题。鉴于初次涉及采用语言编写聊天系统,在开始阶段感觉逻辑复杂,难以控制,目前仍有一些未能解决的缺陷。
通过本次实习,我学到了许多东西,也看到了自己本身存在着许多问题。当前的软件的功能日趋复杂,不学到一定的深度和广度是难以在实际工作中应付自如的。这也反映出我在学校中所学的知识存在理论与实践脱离的情况。需再加强学习,开拓视野,增强实践操作技能,为以后的工作而努力。
在此次实习中,最感谢实习单位和指导老师给予我在工作和学习上帮助!使我提前感受到以后的工作内容和工作方法。通过这几个月的实习,让自己的知识更加的充分和扎实,对以后有了良好的规划。在实习期间,我学会了很多有用东西,看到了自己的缺点与发展方向,磨练了自己的心性,让自己能够在社会的困难路程中越挫越勇、再接再厉。通过实习也让我学会了如何设计一个良好的用户界面,掌握了一些设计用户界面所要注意的要点。并在实践中掌握了用户界面设计的设计方法。这对自己是一个极大的促进和提高。让我能够更好的在学业上取得进步。在未来的学习中我会更加的努力学习,并把所学习的成果全都应用到社会实践中去。
最后,再次感谢实习单位同事和魏涛老师给予我在工作和学习上莫大的帮助!实习单位地址:
实习单位名称(盖章):年月日
指导教师评语
建议成绩:
优良中及格不及格
指导教师签字
年月日最终评定成绩:
优良中及格不及格
系主任签字
年月日下载本文