3 系统总体设计 3.1 需求分析
软件针对局域网内部用户,实现用户间的即时通信。需要分别实现服务器端和客户端的软件设计。
服务器端负责监听用户连接请求,负责连接数据库存储用户信息,负责发送给用户好友信息,负责发送心跳报文检查用户在线状态并即时让用户更新好友在新信息。
客户端发起主动连接,向服务器请求登录或者注册。客户端可以修改昵称,可以加已知用户为好友(类似于MSN的好友添加功能)。客户端之间可以发起P2P模式的聊天,可以传送文件。
3.2 系统基本架构
基于C/S架构的即时通信软件便于对用户信息进行统一管理和保存,面向特定的用户,对信息的安全控制能力很强。为了减轻服务器负担,客户端之间的信息传递是采用P2P模式的,服务器只负责用户的注册,登录和用户在线状态的检验。基本结构如图:
注册和登录信息返回信息SERVER注册和登录信息返回信息CLIENT聊天信息,文件传输CLIENT图1 系统基本架构
3.3 功能模块设计
CLIENT: 1.注册:
(1)可以完成客户端注册,客户端可以通过填写信息进行注册,信息被发送到
服务器端。 2.登录:
(1)客户可以输入账号和密码进行登录,客户端会发送登录信息等待服务器响
应,登录成功后会发出登录成功信息并刷新好友列表。 3.修改:
第 7 页 共 28 页
(1)密码修改:应该有密码修改功能 (2)信息修改:可以更改一些注册信息 4.通信:
(1)即时聊天模块:客户端与客户端之间建立线程进行即时聊天,也包含有简
单的对称加解密算法功能。
(2)好友列表:可以对好友列表进行添加删除等动作 5.文件传输:
(1)文件传输:文件传输功能 SERVER:
1.注册回应:对客户端传送的注册信息进行判断。 (1)HASH加密:对用户的账号和密码信息进行HASH加密
(2)重复用户检查:将加密后信息与已存在账号进行比较,检查是否账号已存
在,如果存在就返回错误信息
(3)注册成功:将可成功注册的用户账号和密码写入数据库内,并向客户端返
回成功信息 2.修改回应:
(1)对密码和信息修改请求进行判断,执行和返回修改成功信息 3.登录回应:
(1)对登录的账号和密码进行加密检查后发回正确或错误情况,并记录上线信
息
(2)好友列表发送:给成功登录的账号发送好友列表及好友上线信息 (3)上线信息发送:给成功登录的账号的好友发送在线信息(包括IP,端口等等
信息) 4.在线情况:
(1)对登录,在线,离线的用户情况进行统计,记录和通知
(2)心跳测试:每隔一段时间发送报文测试用户是否因意外原因离线 (3)情况记录:将用户登录时间,IP,下线时间等信息记录入数据库
第 8 页 共 28 页
3.4 逻辑图
注册失败注册N注册信息检查YHASH加密注册成功密码修改注册回应用户信息管理信息修改CLIENT修改回应SERVER好友列表发送登录回应登录取得好友列表消息加密即时聊天消息解密在线情况上线信息发送文件传输离线N心跳测试Y在线情况记录图2 逻辑图
3.5 数据库设计
3.5.1 实体关系图
服务器是作为记录和读取数据库信息的载体,与客户端关系并不复杂,这里需
第 9 页 共 28 页
要重点考虑客户端之间的关系。用户与用户之间的关系是较为特殊的递归关系,即描述发生在两个相同实体上的关系。
E-R图如下:
Email 好友分组 密码 Email 用户ID 好友分组 密码 状态 客户端 n 聊天 文件n 客户端 IP 状态 IP 昵称 账号 ID ID 好友ID 昵称 账号 图3 E-R图
3.5.2 详细列表
数据库包含两个表,分别为记录用户信息的TCP_Userinfo和记录用户好友信息的TCP_Friendinfo。详细设计见下面两表:
表1 用户信息表TCP_UserInfo
列(属性)名 UserID UserAccount UserNickname UserEmail JoinDate LastLogin UserIP UserFav UserQuestion UserAnswer UserPassword UserOnline 类型 numeric nchar nchar nchar nchar nchar nchar varchar nchar nchar nchar int 主键 Y N N N N Y Y N Y Y N N TCP_Userinfo 宽度 是否允许为空 9 NOT NULL 20 NOT NULL 20 NOT NULL 20 NOT NULL 35 NOT NULL 20 NOT NULL 20 NOT NULL 100 NOT NULL 20 NOT NULL 20 NOT NULL 20 NOT NULL 4 NOT NULL 备注 自增长 用户帐号 用户昵称,可重复 用户EMAIL 注册日期 最后登录IP 用户IP 用户好友分组,有默认值 密码问题 密码答案 用户密码 在线状态,1在,0不在 表2 用户好友表TCP_FriendInfo
列(属性)名 InfoID UserID FriendID FriendGroup 类型 numeric nchar nchar nchar 主键 Y N N N TCP_Userinfo 宽度 是否允许为空 9 NOT NULL 20 NOT NULL 20 NOT NULL 20 NOT NULL 备注 自增长 用户ID 用户好友ID 用户好友分组 第 10 页 共 28 页
4 系统实现
4.1 使用XML定义的即时通信协议
4.1.1 信息结构MESSAGE.CS&UMESSAGE.CS
这两个C#类定义了包括服务器信息,状态信息,注册信息,登录信息,聊天信息或者请求文件传输信息的函数,服务器和客户端通过将它们实例化和序列化再转换成流在网络上进行传输。UMESSAGE.CS主要代码如下:
[Serializable]
public class UMessage {
public UMessage(){ }
private string _nickname; private string _password; private string _accounts; private string _email;
private int _info;//表示注册或者登录信息,客户端信息0为注册,1为登录;服务器返回信息0为用户已存在,1为注册成功,2为服务器未知错误,3为CLIENT在线检查,10为登录失败,11为登录成功
private Friend[] _friend; private int _fn; private string _fg;
public string Nickname {
get { return _nickname; } set { _nickname = value; } }
public string Password {
get { return _password; } set { _password = value; } }
public string Accounts {
get { return _accounts; } set { _accounts = value; } }
public string Email {
get { return _email; } set { _email = value; } }
public int Info {
get { return _info; }
第 11 页 共 28 页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于TCP协议的简单即时通信软件的设计与实现(3)在线全文阅读。
相关推荐: