基于Socket的聊天室

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计报告

课程

设计名称基于Socket的聊天室专业班级

同组人姓名

同组人学号

实验日期

指导教师

成绩

年月日

一、设计目的和要求

1、实验目的

网络聊天系统主要对象是局域网内的用户,使用交流更简单。设计本系统的目标如下:

(1)一台电脑上能够同时登陆多个不同的用户。

(2)进入聊天页面后用户在用户列表中可以看到在线用户。

(3)用户登陆成功后如果需要私聊可以在界面中勾选“悄悄话”选择框进行私聊。

(4)若用户需要群聊,可以在好友列表中选择所有人进行群聊。

2、实验要求

可以实现用户显示、公共聊天、私人聊天、系统消息提示等功能。

二、设计说明(包括设计分析,系统运行环境,设计中的重点和难点,输入和输出输出条件等)

聊天室主要由聊天室服务器和聊天室客户端组成。聊天室服务器负责管理与客户端的连接并发送消息给客户端;聊天室客户端负责接收或者发送聊天消息,登录聊天室服务器等。一个简单的服务器/客户机聊天室模型如图:

聊天室客户端(商用PC)

服务器

聊天室客户端

(其他)

聊天室客户端(笔记

本)

其他服务器

1.首先启动聊天室服务器,使得TcpListener开始监听端口,此时

TcpListener会进入Pending状态,等待客户端连接;

2.其次,当有客户端连接后,通过AccepSocket返回与客户端连接的Socket 对象,然后通过读写Socket对象完成与聊天室客户端的数据传输。聊天室客户端成功启动后,首先创建一个Socket对象,然后通过这个Socket对象连接聊天室服务器,连接成功后开通Socket完成数据的接收和发送处理。

聊天室服务器和聊天室客户端消息的传递是这样进行的:

2.1聊天协议的应答:

聊天命令

客户端服务器

OK /ERR应答信号

在本聊天协议中只定义了两种应答:OK和ERR。客户端收到OK应答时,表示前面发送的聊天命令执行成功;收到ERR应答时,表示前面发送的聊天命令执行失败;

2.1.1聊天状态:

聊天状态:CLOSED和CONNECTED状态。当执行CONN命令后就进入CONNECTED状态。只有在这个状态下才可以执行以下的聊天命令:

CONN:连接聊天室服务器

JOIN:加入聊天(通知其他用户本人已经加入聊天室服务器)

LIST:列出所有的用户(向客户端发送全部的登录用户名字)

CHAT:发送聊天信息(公开的聊天信息)

PRIV:进行私聊(三个参数:私聊信息用户;接收私聊信息用户;发送信息)

EXIT:客户端向服务器发送离开请求;

QUIT:退出聊天,服务器向客户端发送退出命令(执行QUIT命令聊天状态变为CLOSED)

在执行了QUIT命令后,聊天状态就会变为CLOSED的状态,此时客户端只能执行CONN命令再次登录聊天室服务器。

2.1.2 聊天命令

聊天命令主要有:CONN,JOIN,LIST,CHAT,PRIV和QUIT,下面分别介绍这些命令的定义和格式。

1)CONN命令:

CONN命令连接聊天室服务器。当聊天室客户端和聊天室服务器建立了

Socket连接后,会马上发送CONN命令。其命令格式如下:

CONN|发送者的用户名:附件信息|

CONN的参数为发送者的用户名,一般是用户用于聊天的昵称。如果昵

称已经存在,就发送ERR命令,否则就发送OK命令。下面是两个CONN

的链接过程,其中第一个是失败的连接过程,第二个是成功的链接过

程:

CONN|tom|

-ERR|USER TOM ALREADY EXISTS

CONN|tom|

_OK

2)JOIN命令

JOIN命令用于通知用户加入聊天聊天室服务器。当一个用户登录到聊天室服务器后,服务器会发发送JOIN命令通知其他用户有新用户入聊天室服务器。JOIN的命令格式如下:

JOIN|XXXX|

JOIN的参数为刚刚登录到聊天室服务器的用户名,该命令可以不需要用户端的响应,客户端接收到该命名后一般就是更新界面,显示XXX已经加入聊天室。对于刚刚加入的用户,其状态会在收到JOIN命令后变为CONNECTED状态。

3)LIST命令

LIST命令用于向聊天室客户端发送全部的登录用户名字,以便于用户聊

天室客户端上选择用户进行私聊。LIST命令的命令格式如下:

LIST\USERNAME 1| USERNAME2|….| USERNAMEX|

LIST命令的参数可以有很多,用户间用“|”分开,客户端接收到该命令后会解析命令参数并把这些用户显示在界面上。

4)CHAT命令

CHAT命令用于向所有用户发送聊天信息,这是公开的聊天信息其命令格式如下:

CHAT|发送者的用户名:发送内容|

CHAT命令的参数有两个,前面的是发送者的用户名,后面的是发送内容。客户端收到该命令后不需要进行如何处理,只有把信息显示在界面上即可。

5)PRIV命令

PRIV命令是进行私聊的命令和CHAT命令不同,通过RPIV命令传输的信息智能veil接受用户看到。PRIV命令的格式如下

PRIV|发送者的用户名|接受者的用户名|发送内容|

PRIV命令有三个参数,第一个是发送私聊信息的用户,第二个是接收私聊信息的用户,第三个是发送的信息。

6)QUIT和EXIT命令

EXIT命令是客户端向服务器发送离开请求,其命令格式如下

EXIT|要离开的用户名|

EXIT的参数是要离开的用户名。当聊天室服务器接受到该命令后,会清除该用户的一些记录和数据,然后向该客户端发送QUIT命令,表示用户已经离开。QUIT命令的格式如下

QUIT|

客户端收到该命令后,知道服务器已经进行了一些处理,此时可以把链接状态变为CLOSED状态。

2.2系统运行环境

Microsoft visual studio 2010

三、系统详细设计(包括程序模块、流程、主要函数等)

3.1 聊天室服务器模块

相关文档
最新文档