基于Socket的聊天程序

上传人:飞*** 文档编号:30492085 上传时间:2018-01-29 格式:DOC 页数:16 大小:523KB
返回 下载 相关 举报
基于Socket的聊天程序_第1页
第1页 / 共16页
基于Socket的聊天程序_第2页
第2页 / 共16页
基于Socket的聊天程序_第3页
第3页 / 共16页
基于Socket的聊天程序_第4页
第4页 / 共16页
基于Socket的聊天程序_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《基于Socket的聊天程序》由会员分享,可在线阅读,更多相关《基于Socket的聊天程序(16页珍藏版)》请在金锄头文库上搜索。

1、 JAVA 程序设计 课程设计报告课 题: 基于 Socket 的聊天程序 姓 名: 骑蚂蚁去流浪 学 号: 200917010213 同组姓名: 专业班级: 计科 0912 班 指导教师: 刘国清 设计时间: 2012 年上学期第 01 周 评阅意见:评定成绩:指导老师签名:年 月 日1目 录1、前言2 2、课题概述2(1)课题概述3(二)相关技术 33、系统设计3(一)需求分析 4(二)系统功能 5(三)系统架构 6(四)模块设计 7 四、详细设计与实现 8(一)服务端设计 8(二)客户端设计 9(三)辅助类设计 10 五、系统运行结果11六、结论与总结13 (一)课程设计结论 13(二)

2、课程设计总结与体会 14七、附录152一、前言Java 课程设计是计算机科学与技术专业学生必做的集中实践性环节之一,是学习完Java 程序设计课程后进行的一次全面的综合练习。其目的在于通过课程设计,能够得到较系统的技能训练,从而巩固和加深对 Java 编程的基础理论知识的理解,提高综合运用所学理论解决实际问题的能力,成为具有扎实的计算机理论基础和较强的独立动手能力的复合型、应用型人才。2、课题概述1.1、课题概述当今社会,网络技术越来越发展,可以说,二十一世纪就是网络的世纪。网络迅猛发展,势不可挡。为了实现资源共享,各式各样的网站发展迅速,各种各样的聊天工具不断更新。本次课程设计选择一个以 J

3、AVA 语言实现一个基于Socket 的网络聊天室程序。本系统提供一个网络交互平台,各用户之间能够实时方便的传递信息,可以在聊天室里实现群聊。本系统主要是利用 JAVA 语言基于 Socket 通信机制制作的一个聊天室,采用的是客户/服务器。 二层的 C/S 结构是指以单一的服务器和局域网为核心,能通过客户端与用户进行直接对话。为使用户能直观地进行操作,一般要使用图形用户接口(GUI),操作简单、易学易用。在变更用户接口时,只需改写显示控制和数据检查程序,而不影响其他。检查的内容也只限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。典型的 C/S 结构有以下特点:1、服务器负责数据管理及

4、程序处理。32、客户机负责界面描述和界面显示。3、客户机向服务器提出处理要求。4、服务器响应将处理结果返回客户机。5、使网络数据流量最少。1.2、相关技术本系统使用的技术有 Socket 通信机制,XML,MySQL,及 Dom4j 等技术;Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。Socket 程序的工作过程:1.建立 Socket 连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接道。2.数据通信:利用虚拟连接通道传送数据信息进行通信。

5、3.关闭:通信结束时,再将所建的虚拟连接拆除。XML 可扩展标记语言 (Extensible Markup Language) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。非常适合 Web 传输。MySQL 是一个小型关系型数据库管理系统,使用简洁;Dom4j 是一个非常非常优秀的 Java XML API,具有性能优异、功能强大和极端易用使用的特点,在 Java 中使用 Dom4j 解析 XML 比用 Dom,SAX,jdom 等方式更为简单、易用。3、系统设计3.1、需求分析做为一个局域网内的即时聊天程序需具有

6、以下几个功能:41. 用户登录设立一个服务器,实现多用户即时通讯;用户在登录的同时需输入一些个性化的信息,以便于各用户之前的识别。2. 文本聊天用户可以在聊天室里发送文本消息,在聊天室的里所有用户就可以收到该用户发送的所以消息。整个系统分为服务器和客户端,服务器端维护各个客户端的信息。客户端的所有信息发往服务器端,再由服务器进行消息的分析处理并做出相应的控制,服务器端是所有信息的中心。服务器端可以为每个客服端创建线程为其服务,处理客服端发送过来的信息,可以监控所有用户的状态,发出用户上线更新客户端的用户信息列表等功能。本课程设计按照系统的具体功能要求,服务器端使用 ServerConnecti

7、ont类接受客户端发送的连接请求。打开连接时就为客户端发送过来的 Socket 创建新的线程,也就是为新连接的用户分配线程。然后将该用户发送过来的消息中包含的用户名放到服务器中定义的一个用户类中的姓名中,这个用户类中包含用户名和该用户的 Socket,通过这个类就可以实现用户名和用户 Socket 的绑定。每次新获得的用户都放到服务器端的用户列表中,并在服务器端的登陆用户中显示。 首先应用 Socket 编程创建客户端和服务器端,每多个客户端服务器端就会相因的创建一个线程,它们之间通过这个连接来实现数据通信;然后在客户端设置一个监听器,用于监听服务器发来的消息。并根据消息做出不同的动作。客户端

8、使用 Socket 连接服务器。使用默认设置好的的 IP 和端口号后可以连接服务器,然后输入用户名和密码进行登录,若之前没有注册账号,则要先进行注册。登录后创建一个线程,用于监听来自服务器端的消息,并作相应的处理。每次发送消息,都将发送内容封装到消息类中(消息的数据格式为 XML),然后发送给服务器。 服务器接收的消息由相应线程处理,根据不同的消息类型做出不同的处理方式。如果是登陆消息,首先验证账号和密码是否正确,如果登录成功的话,就将发送来的用户列表更新到本地的列表框中,如果登录失败,就发送登录失败的消息到客服端,提示重新输入正确的账号和密码,如果是注销消5息就将注销用户从服务器列表框中删除

9、,同时更新其他客服端的用户在线列表,如果是 Message 消息就将消息转发给所有的在线用户客户端,并更新各个客服端的消息列表。 3.2 系统功能该系统实现了在线用户之间的群聊。首先用户必须注册一个账号才能登陆本系统,同时为了加强之间的信息交流,在客户端可以查看消息、清空消息。为了监控用户之间的状态,服务端和客服端都可以查看用户在线列表。3.3 系统架构1)选择传输控制协议 TCP,使用 Java 的 Socket 编程机制,数据传输使用 XML格式;2)分别设计客户端与服务器端的界面,并使用 Java 应用程序用户界面的开发工具包 Swing 进行窗体界面的布局,以及实现部分窗口事件的相应。

10、(图 1 系统框架图)6(图 2 系统通信原理图)3)数据库设计,本系统使用的数据库为 MySQL;因为本系统只简单的记住用的信息,所以系统只设计了一张 t_users(用户表)表:字段名 类型 是否为空 备注Username Varchar(45) NOT NULL 用户名Password Varchar(45) NOT NULL 密码其中用户名为主键4)数据传输格式,本系统在消息传送时使用的是 XML 格式的数据,格式定义如下(系统按照 type 的值,执行相应的解析方法) :登录时的消息格式(客户端- 服务器):1用户名密码聊天消息的格式(客户端- 服务器):2用户名时间消息内容7聊天消

11、息的格式(服务器- 客户端):3时间消息内容更新用户列表格式:(服务器-客户端)4用户名用户退出时消息格式:(客户端-服务器)5用户名服务器关闭时消息:(服务器-客户端)6客户端确认关闭消息:(客户端-服务器)7登录结果:(服务器-客户端)6结果3.4 模块设计3.4.1 服务器端:主要实现向各个客户端发布系统消息,接受来自客户端的各种信息并分别处理。具体功能如下:连接控制: 包括启动服务器、断开服务器以及断开某个客户端的连接;登陆信息: 检查用户是否成功登陆,如登录,发消息通知所有用户。同时刷新在线用户列表;刷新列表: 在有用户登陆或离开的时候实时更新列表,并将信息反馈到各个客户端;消息处理

12、: 解析客户端与服务器端的消息交互类型,并做出相应处理,把再把消息发送到各个客服端。83.4.2 客户端:主要实现向服务器端发布消息,并且对来自服务器的消息做出相应的响应。具体功能如下:连接功能: 设置服务器 IP 地址和端口号,连接服务器,实现登录及断开功能;登录设置: 登录时,发送消息使服务器端获得相关登录信息,包含用户名和密码;监听作用: 实现对服务器发送过来的消息进行监听的功能;消息处理: 接收由服务器端发送来的信息,并做出相应的响应,查看消息,清空消息记录; 四、详细设计与实现4.1 服务端设计服务端的设计的所有类放在 com.chat.server 包中:Server.java:

13、服务端的 UI 界面设计,继承于 JFrame,是服务端主界面的入口;ServerConnection.java: 继承于 Thread 类,其中public ServerConnection(Server server, int port);设计服务器的端口号;public void run();处理每个用户登录信息 ,为每个成功登录的用户创建一个 ServerMessageThread 线程对象为其服务 ;其中 Socket socket = this.serverSocket.accept();等待获取客户端的连接 ;ServerMessageThread.java:继承于 Thread

14、 类, 其中public ServerMessageThread(Server server, Socket socket);初始化输入输出信息;public void updateUserList();更新服务端的用户列表信息public void run();处理服务器与客户端的交互信息,包括发送消息,接收9消息,处理消息 ,更新用户列表等 ;4.2 客户端设计客户端一共设计了六个类:ChatClient 类: 聊天室的主界面,其中包含聊天室界面的各类组件;ClientConnection 类:继续于(Thread 类) 处理客户端的业务逻辑,包括连接服务器, 登录等功能 ;public boolean login();登录服务器public void sendMessage(String message, String type);发送消息;public void run();发送消息,接受消息;ClientMain 类: 启动客户端,其中包含 main()方法;LoginUI 类 : 用户登录的界面 ,其中用户登录界面的各类组件;registFrame 类: 用户注册的主界面,其中包含用户注册的各类组件;SettingFrame 类: 客户端配置信息设置 ,包括设置服务器 IP 地址和端

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号