网络编程技术课程设计报告

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

课程设计(论文)

题目名称聊天软件的开发

课程名称网络编程技术课程设计

学生姓名

学号

系、专业

指导教师

2016年5月22日

摘要

聊天程序一般采用互连网中继聊天协议,即双方即时通信的过程中必须通过第三方中转,第三方为服务器,聊天程序一般采用UDP协议,在基于UDP协议的基础上,聊天过程中消息的发送必须遵守某一种约定,这种约定规定了“进入聊室”、“发送聊天信息”和“离开聊天室”数据传输格式,中转者(服务器)通过接收客户端不同的数据格式来进行判断消息发送者欲进行的操作,然后对消息进行处理后再进行转发。本次课程设计主要是利用MFC所提供的各种控件,基于C/S模式,设计的一个简单聊天软件。

关键词:Visual C++6.0,客户端-服务器(C/S)结构,简单聊天软件

目录

1 前言 0

2 需求分析 0

2.1 任务和要求 0

2.2 应实现的功能 (1)

2.3 界面及控件变量 (1)

3 分析和设计 (3)

3.1 系统分析及设计思路 (3)

3.2 主要控件的功能 (4)

3.3 程序流程图 (5)

(一)流程运行框架 (5)

(二)服务端 (6)

(三)客户端 (8)

4 具体代码实现 (11)

4.1 服务器 (11)

4.2客户端 (17)

5 课程设计总结 (23)

5.1 程序运行结果或预期运行结果 (23)

5.2 设计结论 (23)

参考文献 (24)

致谢 (24)

1前言

本次课程设计主要是利用MFC所提供的各种控件,基于C/S模式,设计的一个简单聊天软件。聊天软件由客户端和服务器两部分构成,服务器充当“中转者”的职能,客户端将自己的消息首先发给服务器,服务器再根据需要将它们转发给其他客户端。聊天程序一般采用互连网中继聊天协议,即双方即时通信的过程中必须通过第三方中转,第三方为服务器,聊天程序一般采用UDP协议,在基于UDP协议的基础上,聊天过程中消息的发送必须遵守某一种约定,这种约定规定了”进入聊天室”,”发送聊天信息”和”离开聊天室”数据传输格式,中转者(服务器)通过接收客户端不同的数据格式来进行判断消息发送者欲进行的操作,然后对消息进行处理后再进行转发,服务器根据接收到的不同消息格式做出不同的处理。

2 需求分析

2.1 任务和要求

本次课程设计内容任务是简单群聊软件的设计与实现。三人以上为一组,其中一个同学为群聊软件的服务器端,另外同学为群聊软件客户端,服务器开启后公布其IP地址和端口号,客户端用服务器的IP地址和端口号进行登录,观察服务器与客户端的显示的结果,然后由客户端发送群聊消息,观察服务器与各客户端的显示结果。

具体要求如下:

1.采用客户端——服务器(C/S)结构,聊天室软件由客户端和服务器两部分构成,即创建两个工程,服务器(SelfRoom)和客户端(SelfChat)。

2.服务器的对话框界面应具有聊天室IP、端口、开启、关闭、聊天室动态、在线用户等基本内容,而客户端的对话框界面应具有昵称、聊天室IP、端口、登录、离开、聊天记录、在线好友等基本内容,添加相应的成员函数,使程序能正常运行。

3.聊天程序采用UDP协议,基于UDP协议的聊天过程中遵守一种约定,这种约定规定了“进入或离开聊天室”和“发送聊天信息”数据传输格式,服务器

作为“中转者”通过接收客户端不同的数据格式来进行判断消息发送者的欲进行的操作,然后对消息进行处理后再进行转发。

2.2 应实现的功能

此次课程设计内容是群聊软件的设计与实现,采用MFC类编程。下面介绍一下服务器和客户端所实现的功能。

服务器的界面中有管理员、聊天室IP、端口、聊天室动态和在线用户列表,还有“开启”、“关闭”、“退出”按钮。运行服务器时,先进行管理员、聊天室IP、端口的配置,点击“开启”按钮后,聊天室动态的文本框里会显现“聊天室开启成功”等消息以及当时得时间,便可等待成员的加入;当有成员加入时,也会有相应的提示信息,用户列表也会及时更新;当客户端发来消息,服务器会将此消息转发给每一个成员;当列表中的所有成员都离开时,服务器可点击“关闭”,即关闭聊天室。

客户端的界面有您的昵称、聊天室IP、端口、聊天文本框、在线好友列表,还有“进入”、“离开”、“发送”按钮。运行客户端时,先进行昵称、聊天室IP、端口的配置,点击“进入”按钮,与服务器进行了连接;连接成功后,可发送聊天消息点击“发送”就能将消息发送到服务器,让服务器进行处理,发送的信息会显示在聊天框里,每条消息前面还附有发送消息时的时间,在线好友列表中会显示已进入聊天室的成员,可以与他们进行群聊,由于这只是简单的群聊软件,所以只能发送文字信息,不具备发送表情、文件等高级功能;当有成员加入或离开聊天室时,聊天框内会有提示信息,在线好友列表也会即时更新;当客户端想离开时,可以点击“离开”按钮,即可退出聊天室。

2.3 界面及控件变量

(一)服务器

运行界面,如图2.1。

图2.1 服务器界面图(二)客户端

运行界面,如图2.2。

图2.2客户端运行界面图

3 分析和设计

3.1系统分析及设计思路

本次聊天软件采用MFC编程,需要创建2个工程,分别是客户端工程SelfChat和服务器工程SelfRoom,由于本次软件需用到套接字类,所以在创建工程的时候需要选择“Windows Sockets”复选框,并都基于基本对话框。在制作服务器的时候需要添加两个基于CSocket的套接字:CClientSocket(用来监听)和CServerSocket(为每个加入聊天室的客户端生成一个相应的对象与之通信),另外添加一个C++结构体tagHeader(用于客户端和服务器之间辨识消息类型的)。在制作客户端时添加一个基于CSocket的套接字类CClientSocket(用于连接服务器通信),和服务器一样要添加一个C++结构体tagHeader。

整个流程中的事件时序如下:

1. 服务器配置管理员、聊天室IP以及端口后,单击“开启”按钮,此时服务器主动调用Listen()开始监听。

2. 客户端配置昵称、聊天室IP以及端口后,单击“进入”按钮,此时客户端向服务器发起连接Connect()请求,若请求被接收,则紧接着发送会话消息。

3. 服务器的CServerSocket类接收请求并触发OnAccept()事件,该事件过程创建对应请求方客户端的CClientSocket类对象并添加到Socket队列。

4. 更多成员客户端加入时,服务器重复步骤3。

5. 某个成员(客户端)要发送聊天消息时,在发送信息文本框中编辑文字,单击“发送”按钮向服务器发出消息。

6. 某个成员(客户端)发来的消息到达服务器,触发服务器Socket队列中对应该客户端CClientSocket类对象的OnReceive()事件,对发来的消息进行处理。

7. 服务器上对应该客户端的CClientSocket类对象,根据消息头tagHeader 结构中的type字段辨别消息类型:若type=LOGIN_IO,则表示有新成员加入,用广播方式通知所有其他成员客户端,并调用服务器UpdateUser()更新服务器用户列表;若type=SEND_MESSAGE,则表示这只是普通的成员的发言信息,直接广播转发该消息就可以了。

8. 服务器发出的消息到达客户端,触发客户端本地OnReceive()事件,客户端本地Socket根据消息头tagHeader结构中的type字段辨识消息类型:若type=LOGIN_IO,则表示有新成员加入或已有聊天成员下线退出,于是调用客户

相关文档
最新文档