基于Socket的聊天程序

  • 格式:docx
  • 大小:444.32 KB
  • 文档页数:16

百度文库

-

让每个人平等地提升自我

0

JAVA程序设计 课程设计报告

课 题: 基于Socket的聊天程序

姓 名: 骑蚂蚁去流浪

学 号: 0213

同组姓名:

专业班级: 计科0912班

指导教师: 刘国清

设计时刻: 2012年上学期第01周

目 录 评阅意见:

评定成绩:

指导老师签名:

年 月 日 百度文库 - 让每个人平等地提升自我

1

一、前言……………………………………………………………2

二、课题概述………………………………………………………2

(一)课题概述…………………………………………………3

(二)相关技术 ………………………………………………3

三、系统设计………………………………………………………3

(一)需求分析 ………………………………………… 4

(二)系统功能 ………………………………………… 5

(三)系统架构 ………………………………………… 6

(四)模块设计 ………………………………………… 7

四、详细设计与实现 …………………………………………… 8

(一)服务端设计 ………………………………………… 8

(二)客户端设计 ………………………………………… 9

(三)辅助类设计 …………………………………………10

五、系统运行结果…………………………………………………11

六、结论与总结……………………………………………………13

(一)课程设计结论 ………………………………………13

(二)课程设计总结与体会 …………………………………14

七、附录……………………………………………………………15

百度文库 - 让每个人平等地提升自我

2 一、前言

Java课程设计是运算机科学与技术专业学生必做的集中实践性环节之一,是学习完《Java程序设计》课程后进行的一次全面的综合练习。其目的在于通过课程设计,能够取得较系统的技术训练,从而巩固和加深对Java 编程的基础理论知识的理解,提高综合运用所学理论解决实际问题的能力,成为具有扎实的运算机理论基础和较强的独立动手能力的复合型、应用型人材。

二、课题概述

、课题概述

现今社会,网络技术愈来愈进展,能够说,二十一世纪就是网络的世纪。网络迅猛进展,势不可挡。为了实现资源共享,各式各样的网站进展迅速,各类各样的聊天工具不断更新。本次课程设计选择一个以JAVA语言实现一个基于Socket的网络聊天室程序。本系统提供一个网络交互平台,各用户之间能够实时方便的传递信息,能够在聊天室里实现群聊。

本系统主如果利用JAVA语言基于Socket通信机制制作的一个聊天室,采用的是客户/服务器。 二层的C/S结构是指以单一的服务器和局域网为核心,能通过客户端与用户进行直接对话。为利用户能直观地进行操作,一般要利用图形用户接口(GUI),操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他。检查的内容也只限于数据的形式和值的范围,不包括有关业务本身的处置逻辑。典型的C/S结构有以下特点:

一、服务器负责数据管理及程序处置。

二、客户机负责界面描述和界面显示。

3、客户机向服务器提出处置要求。

4、服务器响应将处置结果返回客户机。

5、使网络数据流量最少。 百度文库 - 让每个人平等地提升自我

3 、相关技术

本系统利用的技术有Socket通信机制,XML,MySQL,及Dom4j等技术;

Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,那个连接的端点成为套接字,套接字是在比较低的层次上通信的。

Socket程序的工作进程:

1.成立Socket连接:在通信开始之前由通信两边确认身份,成立一条专用的虚拟连接道。

2.数据通信:利用虚拟连接通道传送数据信息进行通信。

3.关闭:通信结束时,再将所建的虚拟连接拆除。

XML可扩展标记语言 (Extensible Markup Language) ,用于标记电子文件使其具有结构性的标记语言,能够用来标记数据、概念数据类型,是一种允许用户对自己的标记语言进行概念的源语言。超级适合 Web 传输。

MySQL是一个小型关系型数据库管理系统,利用简练;

Dom4j是一个超级超级优秀的Java XML API,具有性能优良、功能壮大和极端易用利用的特点,在Java中利用Dom4j解析XML比用Dom,SAX,jdom等方式更为简单、易用。

三、系统设计

、需求分析

做为一个局域网内的即时聊天程序需具有以下几个功能:

1. 用户登录

设立一个服务器,实现多用户即时通信;用户在登录的同时需输入一些个性化的信息,以便于各用户之前的识别。

2. 文本聊天 百度文库 - 让每个人平等地提升自我

4 用户能够在聊天室里发送文本消息,在聊天室的里所有效户就可以够收到该用户发送的所以消息。

整个系统分为服务器和客户端,服务器端保护各个客户端的信息。客户端的所有信息发往服务器端,再由服务器进行消息的分析处置并做出相应的控制,服务器端是所有信息的中心。服务器端能够为每一个客服端创建线程为其服务,处置客服端发送过来的信息,能够监控所有效户的状态,发出用户上线更新客户端的用户信息列表等功能。

本课程设计依照系统的具体功能要求,服务器端利用ServerConnectiont类同意客户端发送的连接请求。打开连接时就为客户端发送过来的Socket创建新的线程,也就是为新连接的用户分派线程。然后将该用户发送过来的消息中包括的用户名放到服务器中概念的一个用户类中的姓名中,那个用户类中包括用户名和该用户的Socket,通过那个类就可以够实现用户名和用户Socket的绑定。每次新取得的用户都放到服务器端的用户列表中,并在服务器端的登岸用户中显示。 第一应用Socket编程创建客户端和服务器端,每多个客户端服务器端就会相因的创建一个线程,它们之间通过那个连接来实现数据通信;然后在客户端设置一个监听器,用于监听服务器发来的消息。并按照消息做出不同的动作。

客户端利用Socket连接服务器。利用默许设置好的的IP和端口号后能够连接服务器,然后输入用户名和密码进行登录,若之前没有注册账号,则要先进行注册。登录后创建一个线程,用于监听来自服务器端的消息,并作相应的处置。每次发送消息,都将发送内容封装到消息类中(消息的数据格式为XML),然后发送给服务器。 服务器接收的消息由相应线程处置,按照不同的消息类型做出不同的处置方式。若是是登岸消息,第一验证账号和密码是不是正确,若是登录成功的话,就将发送来的用户列表更新到本地的列表框中,若是登录失败,就发送登录失败的消息到客服端,提示从头输入正确的账号和密码,若是是注销消息就将注销用户从服务器列表框中删除,同时更新其他客服端的用户在线列表,若是是Message消息就将消息转发给所有的在线用户客户端,并更新各个客服端的消息列表。

系统功能 百度文库 - 让每个人平等地提升自我

5 该系统实现了在线用户之间的群聊。第一用户必需注册一个账号才能登岸本系统,同时为了增强之间的信息交流,在客户端能够查看消息、清空消息。为了监控用户之间的状态,服务端和客服端都能够查看用户在线列表。

系统架构

1)选择传输控制协议TCP,利用Java的Socket编程机制,数据传输利用XML格式;

2)别离设计客户端与服务器端的界面,并利用Java应用程序用户界面的开发工具包Swing进行窗体界面的布局,和实现部份窗口事件的相应。

(图1 系统框架图) 百度文库 - 让每个人平等地提升自我

6

(图2 系统通信原理图)

3)数据库设计,本系统利用的数据库为MySQL;因为本系统只简单的记住用的信息,所以系统只设计了一张t_users(用户表)表:

字段名 类型 是否为空 备注

Username Varchar(45) NOT NULL 用户名

Password Varchar(45) NOT NULL 密码

其顶用户名为主键

4)数据传输格式,本系统在消息传送时利用的是XML格式的数据,格式概念如下(系统依照type的值,执行相应的解析方式):

登录时的消息格式(客户端->服务器):

1

用户名

密码

聊天消息的格式(客户端->服务器):

2

用户名

时间

消息内容

百度文库 - 让每个人平等地提升自我

7 聊天消息的格式(服务器->客户端):

3

时间

消息内容

更新用户列表格式:(服务器->客户端)

4

用户名

用户退出时消息格式:(客户端->服务器)

5

用户名

服务器关闭时消息:(服务器->客户端)

6

客户端确认关闭消息:(客户端->服务器)

7

登录结果:(服务器->客户端)

6

结果

模块设计

服务器端:

主要实现向各个客户端发布系统消息,同意来自客户端的各类信息并别离处置。具体功能如下:

①连接控制: 包括启动服务器、断开服务器以及断开某个客户端的连接;

②登岸信息: 检查用户是否成功登陆,如登录,发消息通知所有用户。同时刷新在线用户列表;

③刷新列表: 在有用户登陆或离开的时候实时更新列表,并将信息反馈到各个客户端;

④消息处置: 解析客户端与服务器端的消息交互类型,并做出相应处理,把再把消息发送到各个客服端。