基于UDP传输协议的实时通信系统的开发(仿qq聊天程序)
摘 要
互联网的高速发展正改变着人类的生活,它的多姿多彩正一点一滴的渗透到人们生活的每个方面,Internet覆盖的广阔性是世界各地人们利用互联网进行互通信息的重要手段。为了满足人们相互沟通的需要,我们基于VC平台开发了即时通信实时通信系统,采用C/S 框架的基于UDP传输协议的实时通信系统。
该软件主要完成了友好的用户界面的设计,用户基本信息的的保存以及聊天信息的保存。为了更好的保存各种信息,我设计了相应的数据表单,并应用了数据文档的打开与添加读取技术完成对数据文档的操作,为了更好的保存用户的基本信息,我采用了对数据文档的编程,使得用户的信息得到安全的保护,并且避免了用户输入数据信息流失。为了使软件更迷人,我采用了仿QQ聊天程序编程,使得运行该软件时看到类似QQ聊天的界面,使人感到熟悉与亲切。
关键词:套接字 udp协议 实时通信
ABSTRACT
The super-speed development of the Internet is changing human life, it of versatile and a little bit positive a drop people who permeate to each aspect live, extensity that Internet overlay is important means that world-wide locations people make use of the Internet proceeding mutual communication information. For satisfying the demand that people communicate mutually, we base on the udp protocol of VC developped real-time comunications. [资料来源:http://www.doc163.com]
That thesis completed the design of the friendly customer interface primarily, basic information in customer of of the conservancy between conservancy and chat information. For the sake of better conservancy every kind of information, I designed the homologous data form and list, and applied the technique of datadoument complete to the operation of the database, for the sake of the basic information of the better conservancy customer, I adopted to the plait distance of the registration form, make the information of the customer get the safe protection, and avoided the customer repetition input the registration information. For making software more charming, I adopted the system tray plait distance, making circulate the convenient a diagram object flash in that software hour system tray move, letting that everybody having impulse that open it.
Key word: socket;udp protocol;real-time comunications
实时通信系统介绍
首先介绍通信的概念,通信是通过某种媒体进行的信息传递。在古代,人们通过驿站、飞鸽传书、烽火报警等方式进行信息传递。到了今天,随着科学水平的飞速发展,相继出现了无线电,固定电话,移动电话,互联网甚至可视电话等各种通信方式。通信技术拉近了人与人之间的距离,提高了经济的效率,深刻的改变了人类的生活方式和社会面貌。
实时通信系统是一个以人为主导,利用计算机硬件、软件、网络通信设备以及其他办公设备,进行信息的交流、传输、储存、更新和维护,支持组织聊天、个人聊天的集成化的C/S系统。
主要介绍下系统所具有的功能。
①服务器启动
服务器端通过启动来与客户端进行连接。启动服务器端到了服务器页面,有个开启服务器按钮,单击它服务器端就会执行一些操作,首先它会在C盘的根目录下建立一个名为userdata的文本文件,用来保存来自客户端的一些信息,如获取客户端的IP地址,登录信息和注册信息等。还有对编辑框中的信息进行初始化。
②服务器关闭
如果服务器关闭,它就会通知客户端释放连接,还有关闭套接字。
③客户端网络设置
在进行登录或注册之前,首先要进行网络设置,也就是把服务器端的IP填写正确,因为在注册或登录之前,你所保存的注册信息或登录信息都要发给服务器端,所以先要指定服务器IP,这是网络设置功能。
④用户注册
客户端用户通过把注册界面的用户名和密码在编辑框中的数据,通过msg.Format("%d#%s@%d",msgType,dlg.m_username,dlg.m_usercode);把数据格式化成这样的一个msg字符串对象中,msgType,是表示此信息的类型,此信息是注册类型,就把msgType的值赋值为2,m_username是注册页面的用户名,m_usercode是注册页面的密码。注意msgType前面要加“#”,因为这个msg里保存的是一个完整的注册数据,为了把它与其他的注册数据隔开,就用“#”把数据隔开,完整的数据中还要区分是用户名数据还是还是密码数据,所以要用@还隔开这些数据,这些是“#”“@”的作用。把数据发送到服务器端,然后启动接收信息线程,接收信息线程,处理接收信息,处理完后,获取msgType值,然后通过switch(msgType)选择处理注册信息,再分离信息,最后把信息写入文件中去,这就完成了注册。
[来源:http://www.doc163.com]
⑤用户登录
在客户端用户登录的时候,填好QQ号和密码,客户端把数据保存好,发送给服务器端,服务器在打开userdata.txt文档,找到了登录的信息,后返回确认信息。
⑥用户接收消息
在到达消息页面的时候,信息页面已经显示了在线好友和下线好友,点击在线好友的同时弹出了一个消息对话框,此对话框是与你指定的那个用户进行通信的对话框,你可以进行聊天,输入完聊天信息后,点击发送按钮,就把你发送的信息发了,接收的用户的对话框的按钮变为回复字样,你看到了接收到的信息后点击回复按钮就会进行发送聊天数据了。
⑦服务器显示客户端信息
在服务器启动的时候,如果有用户登录或注册,它就会显示客户端的信息,包括ID,用户名,密码,IP,状态等信息。 [资料来源:https://www.doc163.com]
2 逻辑结构
本系统基于C/S结构,主要有服务器模块和客户端模块。
①服务器端
服务器端启动时,通过UDP协议来进行通信,它与客户端进行通信是通过AFXSOCK.H框架类里的通信函数进行通信,不光是聊天的内容需要通信,还有登录注册所得的数据要发给服务器端也要用到,因为基于C/S结构,之间的所有通信都需要这通信函数来传送。通信之前要初始化服务器文档,文档中要保存从发送端发送来的数据,登录的数据存档都在这里。
②客户端
客户端就是要把所有在界面下获得的数据保存到预先定义的数据结构体中,通过调用通信函数与服务器端进行通信,然后,服务器端与服务器文档中的数据进行处理和比较,从服务器文档所得的数据比较完后,需要确认的就在向客户端发送所要发送的数据。[4]
3 系统的特点
基于UDP的实时通信系统的特点是:
UDP对应的则是可靠性要求低、传输经济的应用。
[资料来源:www.doc163.com]
4系统的运行环境
操作系统:Window XP;
CPU:P4 2.3GHZ
内存:512MB;
开发环境:Visual C++ 6.0; [来源:http://Doc163.com]
目 录
摘 要 I
ABSTRACT II
1 引言 1
1.1 问题的提出 1
1.2 目前实时通信系统现状 1
1.3 实时通信系统的意义 1
1.4 VC++介绍 1
1.5 VC++的特点 2
1.6 UDP与TCP的区别 2
2 实时通信系统相关知识 3
2.1实时通信系统介绍 3
2.2设计原理 5
2.3类与函数介绍 7
3 系统概述 13 [资料来源:www.doc163.com]
3.1功能概述 13
3.2 逻辑结构 14
3.3 系统的特点 15
3.4系统的运行环境 15
4实时通信系统设计与实现 16
4.1服务器启动 16
4.2登录模块 20
4. 3注册模块 28
4.4客户端好友列表 31
4.5客户端聊天模块 34
5 结果测试 38
(毕业设计 )
5.1测试方法 38
5.2测试用例 38
5.3测试结果 38
6使用说明 39
6.1服务器使用说明 39
6.2登录功能使用说明 39
6.3注册功能使用说明 39
6.4聊天功能使用说明 39
7 结论 40
参 考 文 献 41
致 谢 42
参 考 文 献
[1]谢菲德[美].Microsoft Visual C++.NET技术内幕.北京:清华大学出版社,2004:165-200
[2]侯俊杰.深入浅出MFC.武汉:华中科技大学出版社,2001:560-675
[3]孙鑫,余安萍.VC++深入详解.北京:电子工业出版社,2006:355-383
[4]曹衍龙,刘海英.VC++网络通信编程实例案例精选.北京:人民邮电出版社,2006:1-78
[5]Robin Dewson[英]. SQL Server 2005基础教程. 北京:人民邮电出版社,2007:78-85
[6]张越 等编著. Visual C++网络程序设计实例详解. 北京:人民邮电出版社,2006:1-108 [资料来源:http://www.doc163.com]
[7]万跃华.Visual C++.NET网络编程. 北京:科学出版社,2006:205-302
[8]明日科技. Visual C++开发技术大全——软件工程师典藏. 北京:人民邮电出版社, 2007:235-322
[9] 求是科技.Visual C++6.0 程序设计从入门到精通. 北京:人民邮电出版社, 2006:102-166
[10] 宋坤,刘锐宁. Visual C++程序设计自学手册. 北京:人民邮电出版社,2008:355-402
[11] 孙鑫.深入编程系列—Visual C++语言编程开发详解. 北京:电子工业出版社,2008:32-200
[12] 张宏军. Visual C++ 6.0编程案例精解. 北京:电子工业出版社,2005:322-455 [资料来源:http://Doc163.com]