电子信息工程专业毕业论文基于qt嵌入式网络聊天系统的设计_第1页
电子信息工程专业毕业论文基于qt嵌入式网络聊天系统的设计_第2页
电子信息工程专业毕业论文基于qt嵌入式网络聊天系统的设计_第3页
电子信息工程专业毕业论文基于qt嵌入式网络聊天系统的设计_第4页
电子信息工程专业毕业论文基于qt嵌入式网络聊天系统的设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子信息工程专业毕业论文--基于Qt嵌入式网络聊天系统的设计目录摘要 3关键词 3Abstract 3keyword 4引言 41QT 61.1QT的概念 61.2QT的发展史和前景 71.3QT的主要功能 8摘要本文主要介绍了如何用QT技术来实现一个局域网的聊天软件。论文阐述了QT的概念,发展历史,功能及其应用平台,以及QT的发展前景;设计思路TCP/IP协议。程序采用典型的C/S服务器端。关键词:QT,TCP/IP通信,SocketsAPI

ABSTRACTThisarticlediscusseshowtodesignanddevelopaLANchattingprograminLinusenvironment.ThenetworkcommunicationpartdependsonthepopularTCP/IPprotocol.SoftwareisbasedonC/Sarchitecture.NetworkcommunicationisdevelopedwithSocket.UIisdesignedwithQTframe.DatabaseisdesignedwithSQLserver.Thearticledescribesaconcisechartsoftwareversion,withthefunctionofloggingin/out,addingfriendtolist,sending/receivingmessageandsoon.Keywords:QT,TCP/IPcommunication,SocketsAPI用户需求,即时通讯的产品也不断。即时通讯的发展在基础应用方面在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。本课题研究的是基于局域网的聊天室,用VC++编写的程序,程序实现一般的文字聊天功能,可作为某局域网的交流工具。本系统采用基于Socket的方法实现局域网通信,基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。基于Socket的局域网聊天工具很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点[3]。基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。如今基于局域网的即时通信工具一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟。UDP的实时性比较好,但是不一定提供可靠的数据传输,TCP可以提供可靠的数据传输,本课题采用TCP完成局域网聊天室的设计。1QT1.1QT的概念Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。.2QT的*1996OctKDE组织成立*1998Apr05Trolltech的程序员在5天之内将Netscape5.0从Motif移植到Qt上*1998Apr08KDEFreeQt基金会成立*1998Jul09Qt1.40发布*1998Jul12KDE1.0发布*1999Mar04QPL1.0发布*1999Mar12Qt1.44发布*1999Jun25Qt2.0发布*1999Sep13KDE发布*2000Mar20嵌入式Qt发布*2000Sep06Qt2.2发布*2000Oct05Qt发布*2000Oct30Qt/Embedded开始使用GPL宣言*2000Sep04Qtfreeedition开始使用GPL*2008Nokia从Trolltech公司收购Qt,并增加LGPL的授权模式*2011Digia从Nokia收购了Qt的商业版权,从此Nokia负责QtonMobile,QtCommercial由Digia负责.3QT的主要功能Qt4.6首次包含了对Symbian平台的支持,并在其所支持的平台中新增了Windows7、AppleMacOS10.6雪豹和即将上市的Maemo6。此外还为实时操作系统QNX和VxWorks提供了网络社区支持。对Maemo5的支持目前也已进入研发阶段,其技术预览版第二版于2009年12月1日发布。Qt对X11、X86、ARM及Symbian的支持首次为开发人员创造了使用同一代码库同时针对这多个平台进行开发的机会。能够跨平台分享代码就意味着开发人员所开发的应用程序上市的速度将更快,影响的设备用户群将更广。QtMobility项目下的全新QtAPI技术预览版也同时发布。这些跨平台的API为开发人员提供了多种功能,如导航类设备的定位功能,以及信息发送和接收、联系人和网络连接管理等。性能提升主要包括:一个经过高度优化、重新编写的QtGraphicsView渲染算法、一个全新的OpenGL绘图引擎、WebKit、使用OpenVG对2D矢量图形的支持,以及对全新DirectFB的支持。Socket网络编程TCP/IP体系结构TCP/IP协议集确立了Internet的技术基础。TCP/IP协议主要作用于OSI网络参考模型中的网络层(第3层)、传输层(第层)和应用层(第7层)。数据链路层(第层)的功能主要应用于其它协议如以太网(Ethernet)、ATM、帧中继(FrameRelay),以及多数供应商特定协议等。TCP/IP充分支持所有通用第层协议。TCP/IP组中的应用程序通常直接运行于传输层协议TCP或UDP上面,并不需要表示层(第6层)和会话层(第5层)的支持。TCP/IP协议的核心部分是传输层协议TCP、UDP,网络层协议IP和物理接口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的应用程序才能设计,所以要使用套接字socket来设计。套接字几个基本的套接字,在以后的篇幅中会给出更详细的使用说明。2、指定本地地址――bind功能:将套接字地址与所创建的套接字号联系起来。格式:intPASCALFARbindSOCKETs,conststructsockaddrFAR*name,intnamelen;参数:s:是由socket调用返回的并且未作连接的套接字描述符(套接字号)。其它:没有错误,bind返回0,否则SOCKET_ERROR3、建立套接字连接――connect和accept功能:共同完成连接工作4、监听连接――listen功能:用于面向连接服务器,表明它愿意接收连接。格式:intPASCALFARlistenSOCKETs,intbacklog;5、数据传输――send与recv功能:数据的发送与接收6、多路复用――select功能:用来检测一个或多个套接字状态。7、关闭套接字――closesocket功能:关闭套接字s格式:BOOLPASCALFARclosesocketSOCKETs。2.3客户机/服务器模式SOCKETS程序设计SOCKETSAPI简介VC++对网络编程的支持有socket支持,WinInet支持,MAPI和ISAPI支持等。其中,SocketsAPI是TCP/IP网络环境里,也是Internet上进行开发最为通用的API。最早美国加州大学Berkeley分校在UNIX下为TCP/IP协议开发了一个API,这个API就是著名的BerkeleySocket接口套接字。在桌面操作系统进入Windows时代后,仍然继承了Socket方法。在TCP/IP网络通信环境下,Socket数据传输是特殊的I/O,它也相当于文件描述符,具有一个类似于打开文件的函数调用-socket。可以这样理解:Socket实际上是一个通信端点,通过它,用户的Socket程序可以通过网络和其他的Socket应用程序通信。Socket存在于一个"通信域"为描述一般的线程如何通过Socket进行通信而引入的抽象概念里,并且与另一个域的Socket交换数据。Socket有三类。第是SOCK_STREAM流式,提供面向连接的可靠的通信服务,比如telnet,。第二种是SOCK_DGRAM数据报,提供无连接不可靠的通信,比如UDP。第三种是SOCK_RAW原始,主要用于协议的开发和测试,支持通信底层操作,比如对IP和ICMP的直接访问。rcWSAAsyncSelects,hWnd,wMsg,FD_READ|FD_WRITE;如果我们需要注销对套接字网络事件的消息发送,只要将lEvent设置为0。2、异步请求函数在BerkeleySockets中请求服务是阻塞的,WINDOWSSICKETS除了支持这一类函数外,还增加了相应的异步请求函数WSAAsyncGetXByY;。”,才能真正建立建立与SocketsDLL的连接Socket系统调用包括创建Socket将创建的Socket与本地端口绑定建立Socket连接服务器监听是否有连接请求数据的可控缓冲发送可控缓冲接收关闭Socket。计代码分析先分析服务器端。首先定义初始化网络函数,也就是SOCKETS的启动在所有WINDOWSSOCKETS函数中,只有启动函数WSAStartup和终止函数WSACleanup是必须使用的。启动函数必须是第一个使用的函数,而且它允许指定WINDOWSSOCKETSAPI的版本,并获得SOCKETS的特定的一些技术细节。本结构如下:intPASCALFARWSAStartupWORDwVersionRequested,LPWSADATAlpWSAData;其中wVersionRequested保证SOCKETS可正常运行的DLL版本,如果不支持,则返回错误信息。接下来就是对SOCKET的设置,本程序使用的数据传输模式是异步非阻塞模式,设置好之后就是监听客户端信息,另外,发生在相应Socket上的各种网络异步事件的处理函数,其中OnAccept传进来的参数是服务器端创建的套接字,OnClose、OnReceive和OnSend传进来的参数均是服务器端在接受客户端连接时新创建的用与此客户端通信的Socket。OnAccept函数来接受连接请求,并保存与发起连接请求的客户端进行通信Socket为新的socket注册异步事件给客户端发数据时做相关预处理OnReceive函数来读出网络缓冲区中的数据包结束与相应的客户端的通信,释放相应资源WSASend函数返回所发送的字节数。(注意该数目可能小于len参数所指定的值)。如果连接结束,则返回0。请注意在这种情况下完成指示(启动指定的完成例程或设置一个事件对象)将早已发生。否则的话,将返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError来获取相应的错误代码,返回-1。错误代码WSA_IO_PENDING表示重叠操作成功启动,过后将有完成指示。任何其他的错误表示重叠操作未能成功地启动,以后也不会有完成指示。若无错误发生且接收操作立即完成,则WSARecv函数返回所接收的字节数。如果连接结束,则返回0。请注意在这种情况下完成指示(启动指定的完成例程或设置一个事件对象)将早已发生。否则的话,将返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError来获取相应的错误代码。错误代码WSA_IO_PENDING表示重叠操作成功启动,过后将有完成指示。任何其他的错误表示重叠操作未能成功地启动,以后也不会有完成指示。若无错误发生,send返回所发送数据的总数(请注意这个数字可能小于len中所规定的大小)。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError获取相应错误代码。若无错误发生,recv返回读入的字节数。如果连接已中止,返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError获取相应错误代码。4界面模块”三行字样,如果登陆成功,在列表框中就会显示“接.1:LIST”字样,获取在线用户列表。如果登陆失败,在列表框中就会显示如“”字样。在注册用户的时候,如果注册成功,在列表框中就会显示如“ADDUSER1001SUCCESS”,如果失败,就会在列表框中显示“ADDUSERFAIL”当修改用户信息的时候就会在列表框中显示“接.1:GINF1001”,如果修改成功,就会在列表框中显示“接.1:UINF1001”。客户端界面主要包括用户登陆界面、用户注册界面、在线用户列表界面、用户聊天界面。其中客户端界面设计思路,主要设计过程如图3所示:图3客户端界面轮廓陆界面分析用户登陆界面如图4所示图4用户登陆界面如图4显示,当单击“登陆”按钮进行用户的登陆:当用户号码未填写时,会提示“请输入用户号码”。当用户密码未填写时,会提示“请输入用户密码”。当服务器IP未填写或格式不正确,会提示“请填写正确的服务器地址”。勾选“保护密码”,在下次打开该登陆界面时,在输入框里自动显示上次登陆时输入的三项信息。用户信息填写完毕后,按“登陆”按钮,如果与服务器连接失败,就会提示如“”登陆成功就会进入在线用户列表界面,如图6所示.。单击“取消”按钮退出登陆界面。单击“注册向导”按钮就可以进入用户注册界面,如图5所示。天界面首先选择你要聊天的好友。通过“发送”按钮发送你要讲的内容,通过“聊天记录”按钮/“关闭记录”按钮来显示/关闭聊天记录。单击“传送文件”按钮,跳出文件目录,让你选择你要传送的文件。如图10所示。图10传送文件界面5数据库模块用ADO访问数据库,用ADO访问数据库的各个对象及各方法。?ADO数据库编程ADO与ADO接口简介ADO是Microsoft为最新和最强大的数据访问范例OLEDB而设计的,是一个便于使用的应用程序层接口。ADO使您能够编写应用程序以通过OLE.DB提供者访问和操作数据库服务器中的数据。OLEDB是一组”组件对象模型”COM接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。OLEDB是MicrosoftUDAUniversalDataAccess策略的技术基础。OLEDB为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。OLEDB应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。您需要的API应该是一座连接应用程序和OLEDB的桥梁,这就是ActiveXDataObjectsADO。使用ADO、引入ADO库文件使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。现在不需添加另外的头文件,就可以使用ADO接口了。3、判断数据库的存在使用USE语句,成功了就存在;不成功,就不存在。4、连接数据库通过MSSQLSERVER2000创建数据库名为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论