您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页即时通信系统

即时通信系统

来源:小侦探旅游网


本科生课程设计

即时通信系统

院 系 计算机科学与技术学院 专 业 计算机科学与技术 班 级 学 号 学 生 姓 名 指 导 教 师 职 称 讲师

2011年 12月

独 创 性 声 明

本人郑重声明:所呈交的课程设计论文(设计)是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文(设计)中作了明确的说明并表示了谢意。

签名:

年 月 日

授权声明

本人完全了解许昌学院有关保留、使用本科生课程设计论文(设计)的规定,即:有权保留并向国家有关部门或机构送交课程设计论文(设计)的复印件和磁盘,允许课程设计论文(设计)被查阅和借阅。本人授权许昌学院可以将课程设计论文(设计)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文(设计)。

本人论文(设计)中有原创性数据需要保密的部分为: 。

签名: 年 月 日 指导教师签名:

年 月 日

摘 要

本文介绍了即时通信系统的程序设计和功能实现。该系统主要是基于TCP与UDP的C/S模式通信系统。该项目由两个主程序组成:服务器端应用程序,客户机端应用程序。服务器启动监听进程,监听连接申请,对于来申请的客户机,或者说申请的ID,服务器进程将会对进行判别和分类,满足服务器要求就进行连接,从而实现客户端的通信。该系统界面友好,操作简单,适应性强,扩展性强。 关键字:即时通信;服务器;客户端;

ABSTRACT

This paper introduces the Instant Messaging systems program design and function realization. The system is mainly based on TCP and UDP C/S mode communication system. The project consists of two main program composition: the server application, the client application. Monitor process server startup, monitor connection application, to apply for the client, or apply for ID, the server process will be to discrimination and classification, and satisfy the

requirements will connect server, so as to realize the client communication. The system friendly interface, simple operation, strong adaptability and expandability. Key word: Instant Messaging ;The server. The client;

目 录

目 录 ..................................................................................................................................... 4 第1章 引 言 ..................................................................................................................... 6

1.1 概述 .......................................................................................................................... 6 1.2 研究背景 .................................................................................................................. 6 1.3 系统简介 .................................................................................................................. 6 1.4系统开发方法 ........................................................................................................... 6 第2章 系统分析 ................................................................................................................. 7

2.1 可行性分析 .............................................................................................................. 7 2.2 功能分析 .................................................................................................................. 7 第3章 系统设计与实现 ..................................................................................................... 9

3.1 项目系统模型 .......................................................................................................... 9 3.2 开发及运行环境 ...................................................................................................... 9 3.3 系统结构设计 .......................................................................................................... 9 3.4 系统功能设计 ........................................................................................................ 10 3.5 服务器端应用程序 ................................................................................................ 12

3.5.1 服务器端应用程序的创建流程 ................................................................. 12 3.5.2 实现界面设计 ............................................................................................. 12 3.5.3 定义类设计 ................................................................................................. 13 3.5.4 实现类中的函数 ......................................................................................... 15 3.5.5实现界面功能按钮 ...................................................................................... 22 3.5.6 测试 ............................................................................................................. 23 3.6 客户端应用程序 .................................................................................................... 23

3.6.1界面设计 ...................................................................................................... 23 3.6.2控件的编辑与绑定 ...................................................................................... 24 3.6.3 定义类设计和实现类设计中的函数 ......................................................... 24 3.6.4 实现界面功能按钮 ..................................................................................... 25 3.6.5 测试 ............................................................................................................. 25

第4章 系统结构 ............................................................................................................... 27

4.1 服务器端结构 ........................................................................................................ 27

4.2 客户端结构 ............................................................................................................ 27 第5章 系统评价 ............................................................................................................... 29 结 束 语 ............................................................................................................................... 30 致 谢 ................................................................................................................................... 31 附录 参考文献 ..................................................................................................................... 32

第1章 引 言

1.1 概述

即时通信(Instant Messaging)是基于互联网协议的应用程序,它能够使应用不同类型设备的用户一对一进行通信。IM最传统的形式是聊天,聊天即双方互相传送信息。与电子 邮件服务相比,聊天服务更具有实时性,更便于人们相互沟通和交流信息。而套接字是通信双方一种相互约定的通信方式和规则,在TCP/IP通信中一般使用套接字的相关函数接口来完成通信过程。区分不同应用程序进程间的网络通信和连接,主要有三个通信的目的IP地址,使用的传输层协议,使用的端口号。通过这三种参数就可以识别客户端双方的身份进行可以放心的通信。本系统在此基础上设计的一个简单的通信系统。

1.2 研究背景

随着互联网的发展,聊天服务已成为必不可少的互联网服务之一,它方便远距离人们的信息的交流,简单易操作,又保证的即时性,使人们更能享受互联网带来的好处。典型的IM是 样工作的:当好友列表中的某人在任何时候登录上线并试图通过用户怕计算机联系用户时,IM系统会发一个消息提醒用户,然后用户能与对方建立一个聊天会话界面并键入消息文字进得交流。自1999年,腾讯公司自主开发了基于Internet 即时通信网络工具—腾讯即时通信(QQ),其合理的设计,良好的易用性,强大的功能,稳定高效的系统运行,赢得了用户的青睐。与电子邮件服务相比,聊天服务具有实时性,人们更便于相互沟通,交流思想和信息。所以即时通信系统已成为人们研究的热点。

1.3 系统简介

该系统是基于客户机/服务器(Client/Server)模式的聊天室系统,此设计采取监听对话模型。基本思路是:服务器启动监听进程,监听连接申请,对于来申请的客户机,或者是申请的ID,服务器进程将会对其判别与分类,满足服务器要求进行连接。

1.4系统开发方法

本系统是利用Visual C++6.0这个集成开发环境设计并实现一个基于C/S模型的聊天室。

1. 该系统是使用MFC库开发基于对话框形式的网络聊天室系统。MFC库可以开发内容和功

能都非常丰富的Windows程序,但万变不离其中,都是围绕着MFC(即继承MFC类进行开发)库实现的。MFC类家族很庞大,但有几个是程序运行必备的类:

6

CObject类:该类完成动态空间的分配与回收。

CCmdTarget类:CCmdTarget类主要负责将系统事件(消息)和窗口事件(消息)发送给响应这些事件的对象,完成消息的发送,等待和派遣工作,实现应用程序的对象之间的协调运行。

CWinApp类:CWinApp类是应用程序的主线程类,它是从CWinThread类派生而来。 CDocument类:CDocument类是文档类,包含了应用程序在运行期间所用到的数据。 CWnd类:CWnd类是一个通用窗口类,用来提供Windows中所有通用特性。 CView类:CView类是用于让用户通过窗口来访问文档以用负责文档内容的显示。 CFrame Wnd类:是CWnd的派生,并实现了标准的框架应用程序。 CDialog类:CDialog类用来控制对话框窗口,并选择从CDialog类继承。

2. VC++提供了多种对网络编程的支持,主要有Socket支持,WinInet支持,MAPIT和ISAPI

支持等。Windows Sockets API 是Win32 API的一个子集,是在TCP/IP网络环境里也是Internet上进行开发的最常用的API。

第2章 系统分析

2.1 可行性分析

即时通信(Instant Messaging),是近年来逐渐兴起的网络应用之一,面向大众娱乐聊天休闲的即时软件层出不穷,如QQ,MSN,Yahoo,Messenger等等。它通过通信系统建立网络虚拟环境,商务通讯及商务合作的新媒体,可以弥补传统通讯形式的不足,尤其是电子邮件及语音的不足,为用户提供了有效的沟通手段。

即时通信系统是随着互联网的出现而兴起的新型通信手段。最早,即时通信系统对人们来说只是一个网络寻找朋友的聊天的工具,但是,随着互联网使用的逐渐丰富和完善,一个综合的桌面通信平台出现了,该平台已经成为一个地地道道的通信工具,并可能成为继电话,电子邮件之后的第三种现代通信方式。在各个领域,即时通信系统作为一种低成本的,集成多种沟通方式(文字,语音,视频,文件传输,文件共享)软件已经成为如今天通用的流行通信方式。如所即时通信系统的研究与开发已成为现今的热点。

2.2 功能分析

即时通信的主要功能如下:

 服务器的建立:这个是实现聊天的关键,只有建立了聊天服务器,客户才能连接

7

到上面从而进行聊天过程的实现,服务器建立之后牌监听状态,等待客户机的申请连接。

 选择连接方式:在服务器建立的时候 ,要选择是何种连接方式,TCP还是UDP,

选择不同,将会受用不同的消息处理机制。同时将确定连接地址和端口号。  启动客户端:开始尝试对服务器进行连接操作,这里面注意之处就是客户机要选

择和服务器一致的连接方式,填入正确的连接地址和端口号。

 启动对话:成功建立连接后,开始进行对话操作,对就不同的方面,出现的消息

也是不的,这样做的好处就是能够屏蔽他人的信息,而只要求显示对自己有用的信息,一来可以节省程序设计的耗时,二来可以保护聊天室中的隐私。  多用户的信息交互:当建立一个连接后,其他的客户机也是可以再连接到上面,

进行多用户的聊天。

 退出聊天系统:聊天结束之后,客户机断开连接就可以退出聊天室,信息不再交

互,如是服务器关闭,连接在上面的所有客户机将会断开。

8

第3章 系统设计与实现

3.1 项目系统模型

该项目由两个程序组成:

 服务器端应用程序:主要是负责信息转发和存储,以及通信端口和通信

用户的管理。

 客户机端应用程序:主要是负责提供给非专业技术人员用户,用户通过

客户机可以和其他客户机或者服务器进行通信。 本项目的系统模型如图1.1所示。

图1.1 系统模型

3.2 开发及运行环境

本系统运行时需要以下条件 硬件平台:

 CPU:Pentium4 1.8GHZ  内存:256MB以上 软件平台:

 操作系统:Windows XP/Windows 2000/Win7  开发工具包:Visual C++6.0

3.3 系统结构设计

9

该系统是基于客户机/服务器(Client/Server)模式的聊天室系统,此设计采取监听对话模型。基本思路是:服务器启动监听进程,监听连接申请,对于来申请的客户机,或者是申请的ID,服务器进程将会对其判别与分类,满足服务器要求进行连接。连接后,客户机端用户就可以进行通信了。系统框架图如图1.2所示。

图1.2 聊天室的C/S模型设计框架

3.4 系统功能设计

实现基于对话框的网络聊天通信则需要实现以下几个功能: 1) 建立通信框架

首先利用MFC AppWizard 生成系统框架:在Visual C++6.0的IDE的环境下选择File|New|Project|MFC AppWizard(exe)|Project Name| OK | NEXT | Window Sockets

10

| Finish 按钮,选择OK按钮,应用程序的框架就将自动创建。之后增加控件对象,布置程序的主对话框,通信框架就建立成功了。

2) 网络连接类CsocketComm

该类的定义和实现,完成了C/S模型的连接处理,也就是所谓的”信道通信”部分。由于本系统集成TCP和UDP的聊天程序,所以在系统中有所区别.主要实现的接口功能包括:创建服务器端socket,获取主机IP,获取服务器端口号,获取本地地址,获取主机名字,数据接收,发送,以及关闭通信等。

3) 创建服务器Server

首先需要创建Socket,在函数CreateSocket()中创建Socket,由于传输中有TCP和UDP两种方式,函数CreateSocket()中根据传递过来的参数nType的值对这两种不同的传输方式进行选择,该函数不管TCP还是UDP连接,都是通用的。当nType=SOCK_DGRAM时为UDP;当nType=SOCK_STREAM时为TCP。有所区别的是,在UDP中如时要进行广播,需要进行互斥操作,防止同一时间不同的UDP广播;在TCP连接模式中,没有UDP传输模式中的广播模式,但是在TCP连接需要保存socket,保证连接的存在和数据到达的准确性。服务器的主要功能包括启动服务器,更新服务器、关闭服务器、发送与接收信息,以及设定相关选项。

4) 创建客户机Client

客户机的创建和服务器的创建同等重要,都是通信的实体。客户端通过函数ConnectTO来进行连接申请,首先判断Socket是否已连接,如果创建就返回false,否则就创建Socket。创建好Socket之后和本地地址绑定,再获取远程服务器的地址和端口号,确定好服务器,就调用Connect()将客户机连接到服务器。

5) UDP中多用户聊天的实现

首先,服务器创建UDP类型的套接字并绑定服务端口,并使得该套接字处于未连接状态;接下来就循环读取来自客户机的请求,将其地址保存起来,写入地址表m_AddList。服务器端接收客户机发送过来的数据时,先判断缓冲区是否够大,足够大刚写入缓冲区;向客户机发送数据时,通过广播的形式,先锁定地址列表LockList(),然后通过for循环语句,对地址列表中的每个地址通过函数sendto()发送数据到客户机。期间,若某客户机与服务器断开连接,刚从地址列表中删除其

11

地址信息,之后将不再发送数据。

6) 退出系统

当客户端选择退出系统时,则断开与服务器的连接,不开转发其信息。

3.5 服务器端应用程序

3.5.1 服务器端应用程序的创建流程 创建流程如下:

1.创建基于对话框且支持Socket的应用程序 2.界面设计 3.类设计 4.界面功能按钮

3.5.2 实现界面设计

实现界面设计不仅仅是设计一个界面,还需要对界面的控件名称和控件绑定的变量进行定义。

(1) 界面设计

服务器的对话框界面如图1.3所示。

12

图1.3 服务器端应用程序界面设计

(2) 编辑控件与变量绑定

设置界面中的3个编辑框的ID和与之绑定的变量,如表1.4所示。

表1.4 编辑框控件和变量的绑定

编辑控件的内容 ID 服务器端口 聊天记录 发送消息 端口微件

3.5.3 定义类设计

IDC_EDIT_PORT 类型 CString 变量名 m_strPort M_ctrlMsgRecord M_ctrlMsg M_ctrlSpinPort IDC_EDIT_MSGRER CEdit IDC_EDIT_MSG IDC_SPINPORT CEdit CSpinButtonCtrl 服务器有2个基本功能:聊天记录的转发、端口管理。将这两个功能封装在两个类中:

 CSocketComm类:该类负责网络连接,信息转发等。  CSocketManager类:该类负责端口的管理。 CSocketComm类中的主要函数功能:

13

1) static SOCKET WaitForConnection(SOCKET sock); 等待新的连接。 2) static bool ShutdownConnection(SOCKET sock); 关闭连接。 3) static USHORT GetPortNumber( LPCTSTR strServiceName ); 获得服

务端口号。

4) static ULONG GetIPAddress( LPCTSTR strHostName ); 获得主机IP

地址。

5) static bool GetLocalName(LPTSTR strName, UINT nSize); 获得机器

名。

6) static bool GetLocalAddress(LPTSTR strAddress, UINT nSize); 获得

本地地址。

CSocketComm类代码如下:

CSocketManager类中的主要函数如下:

1) virtual void OnDataReceived(const LPBYTE lpBuffer, DWORD dwCount);

接收数据

2) void DisplayData(const LPBYTE lpData, DWORD dwCount, const

14

SockAddrIn& sfrom); 显示数据 CSocketManager类代码如下

3.5.4 实现类中的函数

CSocketComm类主要实现5个功能:获取本机地址、创建套接字、 关闭套接字、数据读入、数据发送。CSocketManager类实现数据显示。开发流程如下:

1.获取本机地址 2.创建套按字 3.关闭套接字 4.数据读入 5.数据发送 6.数据显示

1. 获取本地计算机机器名及IP地址。获取本地计算机机器名及IP地址及

端口号,为了区分不同的应用进程和连接事务,用于本地计算机用户进行通信。 实现代码如下:

15

16

2. 创建套接字。套接字,是支持TCP/IP的网络通信的基本操作单元,

可以看做是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。套接字主要有三个参数组成:通信的目的IP地址,使用的传输层协议,使用的端口号。创建一个套接字就是为客户端提供一个可以通信的接口。 实现代码如下:

17

3. 关闭套接字。当服务器断开或客户端断开服务器时则关闭套接字,不再

传输任何信息。 代码如下:

4. 数据读入,把客户端输入的信息传入服务器端进行转发。 实现代码如下:

18

5. 发送数据。对于从客户端口传来的数据,根据传输层的协议选择对点转

发或者广播进行发送。如果是TCP协议则不进行广播,只需要保存

19

socket,保证连接存在和数据到达的准确性。如果UDP连接则进行广播,需要互斥操作,防止同一时间不同的UDP广播。 实现代码如下:

20

21

6. 数据显示。将数据信息在服务器端显示出来。 实现代码如下:

3.5.5实现界面功能按钮

控件的ID只是标记一个控件,程序中不能直接控制ID,只能通过修改变量来改变控件的状态,要实现控件的功能还需要对其添加消息处理函数。

服务器的界面主要有6个功能按钮 :  Socket类型:选择TCP或UDP协议。  服务器端口:设置服务器端口。

 启动:单击该按钮,则启动服务器以提供C/S模式系统的服务。  停止:单击该按钮,则停止服务器断开连接,不再提供通信服务。  发送:单击该按钮,则在服务器端向全部在线用户广播一条消息。  退出:退出服务器系统。

22

3.5.6 测试

测试时选择TCP连接方式,并单击“启动”按钮,可以得到的运行结果如图1.6所示。

图1.6 服务器运行结果

3.6 客户端应用程序

3.6.1界面设计

主要功能是连接服务器地址和端口,选择socket类型和填写登录的用户名。界面设计如图1.7所示。

23

图1.7 客户端应用程序界面设计

3.6.2控件的编辑与绑定

控件的编辑与绑定如下表1.8所示。

表1.8 编辑框控件和变量绑定

编辑控件的内ID 容 服务器端口 聊天记录 发送消息 端口微件 服务器地址 登录用户名

IDC_EDITPORT IDC_EDIT_MSGRER IDC_EDIT_MSG IDC_SPINPORT IDC_IPADDRESSSVR 类型 变量名 CString CEit CEit m_strPort m_ctrlMsgRecord m_ctrlMsg CSpinButtonCtrl m_ctrlSpinPort CIPAddressCtrl m_ctrlIPAddr M_strUserName IDC_EDIT_USERNAME CEit 3.6.3 定义类设计和实现类设计中的函数

客户端主要用于连接服务器,登录用户名后进行通信。所以在本项目中客户

24

端的主要功能封装在两个类中:

 CSocketComm类:该类负责网络连接,信息转发。  CSocketManager类:该类负责端口的管理。 3.6.4 实现界面功能按钮

客户机端的界面主要有3个功能按钮:  Socket类型:选择连接方式TCP或UDP。

 连接服务器:单击该按钮,则自动搜索局域网内的服务器,如果有,则

连接成功,可以进行下一步通信操作。否则连接失败。

 断开服务器:单击该按钮,则停止发送断开服务器的信号传给服务器,

告知服务器本地已经放弃连接。

 发送:单击该按钮,则向服务器端发送一条信息,这条信息的转发则由

服务器负责。

 退出:退出客户端系统。 3.6.5 测试

在启动客户端程序之前,先保证ChatServer应用程序已经启动。 具体操作步骤如下:

1) 启动服务器端程序,并将服务器端的Socket类型设置成为UDP或TCP

模式,端口5000(默认值)。

2) 启动客户端,选择Socket类型为UDP模式,登录名为朵朵,端口默认

5000,然后单击“连接服务器”。

3) 启动客户端,选择Socket类型为UDP模式,登录名为笑笑,端口默认

5000,然后单击“连接服务器”。

4) 在两个客户端分别输入聊天信息,观察两客户端“聊天记录”编辑框和

服务器端的“聊天记录”编辑框的信息变化。 其中一个客户端的运行效果如图1.9如示。

25

图 1.9 客户端运行效果

此时,服务器运行界面运行效果如图1.10所示。

图1.10 服务器运行效果

26

第4章 系统结构

4.1 服务器端结构

服务器端的主要任务是“提供服务”,即进行通信端口的管理,聊天记录的转发,其总体设计结构图如1.11所示。

数据报套接字UDP 套接字选择 流式套接字TCP 服务器端口设定 启动服务器 对服务器的操作 服务器 关于(About) 停止服务器 发送消息 聊天记录显示

图1.11 服务器端功能

4.2 客户端结构

客户端主要是连接服务器,进行通信,其结构图如1.12所示。

27

数据报套接字UDP 套接字选择 流式套接字TCP 服务器端口设定 客户端

服务器IP地址设定 登录用户名设定 启动服务器 对服务器的操作 停止服务器 关于(About) 发送消息 聊天记录显示 图1.12 客户端口的功能

28

第5章 系统评价

此系统只是一个简单的应用在局域网上的通信工具,优点界面简洁易懂,实现简单,有很强的适应性与拓展性,具有潜在的商业价值。

但是现实中即时通信工具往往提供更多的增值服务,如可以浏览网页,传输文件,视频通话,远程求助等等额外增值服务。所以此系统还有很多需要扩展的地方,可以慢慢改进

29

结 束 语

每一项工程都是不易的,经过两个月的努力,即时通信系统终于完工了。在这期间虽遇到很多技术问题,但都通过各种渠道一个个解决了,让我学到了很多知识,丰富了我的实践经验。以下是我的学习心得: 1.对系统开发方法的认识

系统开发是一个具体而完整的工程,首先要在态度上摆正,要有坚持不懈,遇到问题不退缩,运用各个途径去解决,相信自己不轻易放弃信念。其次,在建立一个工程前一定要先把这个工程需要实现的功能,实现的顺序,功能结构图及开发流程图构造好,做好充分的准备,再分步实现各个模块。 2.需求分析一定要到位

在设计中需要随时与用户保持交流,以保证功能的完善,满足用户的需求。 3.对MFC工程的体会

MFC基于对话框编程,MFC中包含了很多库文件,很多类,在编程时可以直接调用,简单方便,且功能强。

30

致 谢

开发软件是一件很辛苦的事,自己的力量是单薄的,在软件的设计与开发过程中,受到马慧老师的指导与帮助,让我坚持完成了这项工程,特别感谢她给予的关心与帮助,给了我信心与支持。

其次感谢我亲爱的同学,在设计遇到问题时也给予了及时的帮助,使我处在一种友爱,积极的学习氛围中,让我的学习不断进步。

31

附录 参考文献

[1] 古万荣,《Visual C++ 完全自觉手册》机械工业出版社[M]2009-1 [2] 刘锐宁,宋坤,《Visual C++从入门到精通》清华大学出版社[M]2010-9

32

33

34

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务