P2P聊天实验报告.docx
《P2P聊天实验报告.docx》由会员分享,可在线阅读,更多相关《P2P聊天实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
P2P聊天实验报告
成员分工:
服务端文档及代码:
客户端文档及代码:
概要设计文档及建模和框架设计:
工作量:
各占34%33%33%
概要设计说明书
1.概要设计
1.1需求规定
本系统最终实现一个基于P2P相关技术的聊天系统,该系统由多个聊天客户端和一个中心服务器组成,各个聊天客户端可以两两相互发送消息。
目的在于设计GUI,多线程和套接字编程等。
基本功能:
点对点的单人聊天;多人同时聊天;用户可以自由加入和退出。
1.2运行环境。
1.2.1平台要求:
Windows/linux
1.2.2开发及运行环境
本软件是在myeclipse开发环境下开发,jdk/jre版本为1.6,开发语言为java,运行时需要java运行时环境(jre),即需要安装java虚拟机,jre版本1.6以上。
1.3基本设计概念
本系统系统结构大致流程图如图:
设计说明:
服务器:
1.服务器初始先启动,启动后服务器会开启服务器监听线程,监听客户的登录。
当客户登录后,会获得客户的相关信息,实时反馈给客户在线活跃用户列表。
2.服务器启动后,针对每个登录的客户,会启动一个服务器接收线程,如果有客户退出,则会更新在线用户列表,然后返回给各个客户端。
客户端:
3.客户端初始向服务器发送登录请求,并实时从服务器端获取当前在线活跃用户列表及在线用户人数并显示;客户端若退出则向服务器发送退出消息以便服务器更新在线活跃用户列表。
4.客户端登录后,开启一个监听线程,监听其他用户经由服务器发来的消息,发来消息后则显示;同时客户在界面左侧的在线列表中选择需要聊天的对象,在输入框中编辑信息后发送,即建立于指定客户间的连接并传送消息。
1.4实现技术:
本系统主要涉及socket网络编程和多线程编程技术,采用的开发语言为java。
为保证数据收发的可靠性,本系统采用面向连接的通信方式(TCP套接字)实现,具体采用流式套接字提供双向,可靠,有序且面向连接的数据流服务。
其中,Socket类用于建立套接字连接,ServerSocket类用于监听套接字连接,OutputStream类用于实现网络套接字流的发送,InputStream类用于网络套接字流的接收。
1.5界面结构
系统界面结构图如下:
服务端:
客户端:
1.6功能和模块划分:
服务端模块:
客户端模块:
基础支持模块:
1.7时序图:
客户服务器交互时序图:
2接口设计
2.1服务器核心接口
1.类:
ServerListenThread
a.1通过ServerListenThread类的构造方法提供接口初始化服务器监听客户登录接口,如下图:
a.2服务器开启时开始监听客户端登录
a.3监听开启后,如果有客户端登录,则记录客户信息
2类serverreceivethread
Serverreceivethread类,针对客户登录后回开启监听客户,当客户下线时,此监听线程会收到消息并通知别的在线用户,及时更新在线活跃用户。
a.1serverreceivethread类的构造方法接口:
a,2当有客户下线时,则通过sendToAll()接口、sendUserList()接口发送在线活跃用户数、在线活跃用户列表。
3.sendToall()接口
调用接口通知各个客户端当前活跃用户数
4.sendUserlist接口
调用接口通知各个客户当前活跃用户列表
5.sendsystemmessage()接口
调用此接口服务器会向每个客户端发送系统消息
2.2客户端核心接口
1.类:
ClientSendThread
a.1通过ClientSendThread类的构造方法提供接口初始化发送信息,如下图:
a.2在Client类中群发消息时,每次创建发送线程时调用ClientSendThread构造方法接口,如下:
a.3在Client类中指定对象发送消息时,创建发送线程时调用ClientSendThread构造方法接口,如下:
b.在ClientSendThread类中,通过Socket类接口与目标建立套接字连接,通过ObjectOutputStream类接口实现网络套接字流的发送(依次发送信息标签;用户名;消息内容),如图:
2.类:
ClientReceiveThread
a.1通过ClientReceiveThread类的构造方法提供接口初始化接受信息,如下图:
a.2在Client类中初始与服务器建立连接后,创建ClientReceiveThread监听线程时调用,如下图:
b.在ClientReceiveThread类中,通过ServerSocket类接口监听请求,通过ObjectInputStream类接口实现网络套接字流的接收(依次接收信息标签;用户名;消息内容),如图:
3运行设计
3.1运行模块组合
系统运行由服务器和多个客户端组成。
3.2服务器运行
启动服务端,在界面上方启动按钮处点击【启动】,服务器就会启动监听客户端登录,在上方当服务器启动后回返回服务器地址及端口在中央界面框可查看消息记录的显示,在右侧列表可以看到在线用户名称及在线人数,在下方输入框输入消息并点击【发送】即会以系统消息形式发送给每个用户。
3.3客户端运行
启动客户端,在界面上方输入服务器IP和端口以及登录用户名并点击【登录】进入系统,在中央界面框可查看到消息记录的显示,在右侧列表可看到在线用户名称及在线人数,选择某一用户并在界面下方输入框输入消息,点击【发送】即将消息发送到指定的用户;选择“all”,则群发消息。
点击【清除】清空输入框信息,点击【关闭】退出客户端。
4系统数据结构设计
4.1逻辑结构设计
类图:
服务器:
客户端:
基础类:
4.2物理结构设计
不涉及数据库等物理文件
4.3结构关系
服务器:
客户端:
5系统出错处理设计
5.1出错信息
若出错,将提示出错信息。
5.2补救措施
根据出错提示进行响应或重新运行程序
5.3系统维护设计
无需维护