基于LINUX聊天客户端模块设计与实现论文_第1页
基于LINUX聊天客户端模块设计与实现论文_第2页
基于LINUX聊天客户端模块设计与实现论文_第3页
基于LINUX聊天客户端模块设计与实现论文_第4页
基于LINUX聊天客户端模块设计与实现论文_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、xx学院本 科 生 毕 业 论 文( 届)题 目: 基于linux聊天客户端模块设计与实现系 别: 计算机科学系 专 业: 计算机科学与技术 班 级: 作者姓名: 学号: 指导教师: 职称: 学历: 论文成绩: 20 年 月目 录摘 要1abstract1绪 论3第一章 概述41.1 linux的网络功能与编程41.1.1 linux概述41.1.2 linux的特点51.1.3 linux的网络功能71.1.4 linux提供的网络服务71.2 tcp/ip协议简介81.3 socket的简介91.4 arm的简介9第二章 规划设计112.1 课题来源112.2 需求分析11第三章 系统分析

2、与设计方案133.1 聊天系统客户端的总体设计要点133.2 聊天系统客户端的设计步骤及功能模块划分133.3 聊天系统客户端各功能模块14第四章 系统设计与实现234.1 开发环境工具234.2 硬件环境244.3 网站功能模块的测试26第五章 总结315.1 毕业设计总结和展望315.2 经验和感想31结 束 语33参考文献34指导教师评语阅卷人评语 基于linux聊天客户端模块设计与实现计算机科学系 20 级 班 摘 要:聊天室是一种广泛应用于网络的聊天方式,操作非常简单,功能也很丰富。可以使用多种编程类语言来设计和开发出功能比较完善的网络聊天室。整个项目介绍在linux操作系统下设计和

3、实现的一个网络聊天室客户端的全过程。本系统采用c/s构架设计,使用了linux下c编程,结合qt编译语言,开发出简洁美观和布局合理的用户gui界面;利用了socket网络开发技术实现客户端和服务器端的连接访问;通过对数据流操作的合理解析,实现信息传递、接受和数据保存。同时,采用多线程、多任务的设计思想,开发出性能稳定,功能全面的服务器。本篇论文介绍客户端的实现,主要功能包括:实现聊天室的登录、注册、群聊以及私聊。最后将整个客户端程序移植到arm开发板上,在板子上完整的实现系统的功能。使本聊天室客户端可以在移动设备上实现功能、摆脱了传统的pc机限制。关键词:聊天室;linux系统;qt语言;so

4、cket;armthe design and emplementation of chatroom client based on linux class ,grade ,computer of scienceabstract: chat room is a wide range of applications in the network chat mode, the operation is simple, the function is also very rich. you can use a variety of programming language to design and

5、develop a function more perfect network chat room. the entire project is introduced in the linux operating system design and implementation of a network chat room client process. this system adopts c / s architecture design, the use of linux c programming, with qt language compiler, a simple and rea

6、sonable layout of the user interface gui; use of socket web development technology to realize the connection between the client and server access; through the data stream operation of rational analysis, the realization of information transmission, receiving and data save. at the same time, multi-thr

7、eading, task design, developed a stable performance, fully functional server. this paper introduces the realization of the client, the main function includes: the realization of the chat room login, registration, group chat and private chat. finally the client program to transplanted into the arm de

8、velopment board, the board on the full implementation of the function of the system. the chat client allows mobile devices to achieve function, get rid of the traditional pc machine limited.keyword: chat room; linux; qt; socket;arm绪 论linux 操作系统作为一个开源的操作系统被越来越多的人所应用,基于linux系统的聊天系统优势在于使用方便快捷,易学易懂,具有即时

9、性。尤其是对于企事业单位具有可靠性,能够实现消息的即时发布与收集。不需使用互联网,只需局域网既可实现通讯,省时省力。另外该系统对硬件的需求很低,不影响电脑的其他工作。因此制作一个linux 操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握linux平台上应用程序设计开发的过程,将大学四年所学知识综合运用,以达到检验学习成果的目的。第一章 概述1.1 linux的网络功能与编程 1.1.1 linux概述 linux是一种自由和开放源码的类unix操作系统。目前存在着许多不同的linu

10、x,但它们都使用了linux内核。linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是linux操作系统。严格来讲,linux这个词本身只表示linux内核1,但实际上人们已经习惯了用linux来形容整个基于linux内核,并且使用gnu 工程各种工具和数据库的操作系统。linux 操作系统是unix 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于internet 网络,并经过全世界各地计算机爱好者的

11、共同努力下,现已成为今天世界上使用最多的一种unix 类操作系统,并且使用人数还在迅猛增长。 linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:unix 操作系统、minix 操作系统、gnu 计划、posix 标准和internet 网络。linux 操作系统刚开始时并没有被称作linux,linus 给他的操作系统取名为freax,其英文含义是怪诞的、怪物、异想天开等意思。在他将新的操作系统上载到ftp,funet。fi服务器上时,管理员ari lemke很不喜欢这个名称。他认为既然是linus 的操作系统就取其谐音linux 作为该操作系统的目录吧,于是linux 这

12、个名称就开始流传下来。 在linus 的自传just for fun一书中,linus 解释说:坦白地说,我从来没有想到过要用linux 这个名称发布这个操作系统,因为这个名字有些太自负了。而我为最终发布版准备的是什么名字呢freax。实际上,内核代码中某些早期的makefile - 用于描述如何编译源代码的文件 - 文件中就已经包含有freax这个名字了,大约存在了半年左右。但其实这也没什么关系,在当时还不需要一个名字,因为我还没有向任何人发布过内核代码。而ari lemke,他坚持要用自己的方式将内核代码放到ftp 站点上,并且非常不喜欢freax 这个名字。他坚持要用现在这个名字(lin

13、ux),我承认当时我并没有跟他多争论。但这都是他取的名字。所以我可以光明正大地说我并不自负,或者部分坦白地说我并没有本位主义思想。但我想好吧,这也是个好名字,而且以后为这事我总能说服别人,就像我现在做的这样。1.1.2linux的特点 linux的主要特点:linux之所以能在嵌人式系统领域取得如此辉煌的成绩,与其自身的优良特性是分不开的。与其他操作系统相比,linux具有以下一系列显著的特点。1.模块化程度高linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移走,使得linux系统

14、内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。2.源码公开由于linux系统的开发从一开始就与gnu项目紧密地结合起来,所以它的大多数组成部分都直接来自gnu项目。任何人、任何组织只要遵守gpl条款,就可以自由使用linux 源代码,为用户提供了最大限度的自由度。这一点也正投嵌入式系统所好,因为嵌入式系统应用千差万别,设计者往往需要针对具体的应用对源码进行修改和优化, 所以是否能获得源代码 对于嵌入式系统的开发是至关重要的2。加之linux的软件资源十分丰富,每种通用程序在linux上几乎都可以找到,并且数量还在不断增加。这一切就使设 计者在其基础之上进行二次开发变得非常容易。另外,由于l

15、inux源代码公开,也使用户不用担心有“后闸”等安全隐患。同时,源码开放给各教育机构提供极大的方便,从而也促进了linux的学习、推广和应用。3.丰富的网络功能linux从诞生之日起就与internet密不可分,支持各种标准的internet网络协议,并且很容易移植到嵌入式系统当中。目前,linux几乎支持所有主流的网络硬件、网络协议和文件系统,因此它是nfs的一个很好的平台。另一方面,由于linux有很好的文件系统支持(例如,它支持ext2、fat32、romfs等文件系统),是数据各份、同步和复制的良好平台,这些都为开发嵌入式系统应用打下了坚实的基础。4.与unix完全兼容目前,在linu

16、x中所包含的工具和实用程序,可以完成unix的所有主要功能。但由于linux不是为实时而设计的,因而这就成了linux在实时系统中应用的最大遗憾。不过,目前有众多的自由软件爱好者正在为此进行不懈的努力,也取得了诸多成果5.完全免费linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变。这让linux吸收了无数程序员的精华,不断壮大。 6.多用户、多任务linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利

17、,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,linux可以使多个程序同时并独立地运行。 7.良好的界面 linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似windows图形界面的x-window系统,用户可以使用鼠标对其进行操作。在x-window环境中就和在windows中相似,可以说是一个linux版的windows。 8.可靠的安全、稳定性能 linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。linux由于需要应用到网络服务器,这对稳定性也有比较高的

18、要求,实际上linux在这方面也十分出色。 9.支持多种平台 linux可以运行在多种硬件平台上,如具有x86、680x0、sparc、alpha等处理器的平台。此外linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的linux 2.4版内核已经能够完全支持intel 64位芯片架构。同时linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。1.1.3 linux的网络功能(一)完善的内置网络 linux在通信和网络功能方面优于其他操作系统。 其他操作系统不具有如此紧密地和内核结合在一起的连接网络能力,也没有内置这些联网特性的灵活性。

19、linux为用户提供了完善、强大的网络功能。 linux免费提供大量支持internet的软件3。internet是在unix领域中建立并繁荣起来的,因此,使用linux十分方便。用户可用linux通过internet网络进行通信。(二)文件传输 用户能通过linux命令完成内部信息或文件的传输。(三)远程访问linux不仅允许进行文件和程序传输,还为系统管理员和技术人员提供访问其他系统的窗口。通过远程访问功能,一个技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。1.1.4 linux提供的网络服务(一)电子邮件服务linux系统通过sendmail实现电子邮件功能。它具有稳

20、定与可扩充的特性,经过适当的设定再配合必要的硬件能够承受上千个使用者的负荷,而不会有任何错误。(二)网页(web)服务linux提供很多网页服务器,如cern httpd,ncsa httpd,apache等。其中,apache是世界排名第一的web服务器。根据著名的www服务器公司调查,世界上有50%以上的www服务器都在使用apache。(三)ftp服务ftp(file transfer protocol,文件传输协议)实现了客户机在ftp服务器上传与下载文件的功能。(四)域名服务用ip地址访问internet上的主机,需要记忆很多枯燥的数字。域名服务器可以实现ip地址和主机域名之间的转换

21、。因此,访问一台internet上的主机时,只要输入主机的域名,即可访问该主机提供的服务。(五)新闻(news)服务usenet(友思网)是一个大的告示板系统,采用阶层式的架构,包含有多种讨论话题,计算机经usenet以nntp(network news transfer protocol)通信协议互换文章。(六)其他网络服务 包括拨号服务器、dhcp服务、bbs服务、防火墙服务、路由器服务等。1.2 tcp/ip协议简介(一)简介tcp/ip协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如t1和x.25、以太网以及rs-232串行接口)之上。确切地说,tcp/ip协议

22、是一组包括tcp协议和ip协议,udp(user datagram protocol)协议、icmp(internet control message protocol)协议和其他一些协议的协议组。tcp/ip协议并不完全符合osi的七层参考模型4。而tcp/ip通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(smtp)、文件传输协议(ftp)、网络远程访问协议(telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(tcp)、用户数据报协议(udp)等,tcp和udp

23、给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(ip)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如ethernet、serial line等)来传送数据。(二)特点tcp/ip协议是现在互联网的基础。tcp/ip协议主要有如下的特点。 1tcp/ip协议是一个开放的协议标准,所有人都可以免费试用,并且是独立于硬件和操作系统的。 2tcp/ip协议是不区分网络硬件的,它在局域网,广域网和互联网中都被广泛使用。 3tcp

24、/ip协议使用统一的网络地址分配的方案。网络中的每台电脑都具有唯一的ip地址。 4tcp/ip协议是一个标准的高层协议,拥有极高的可靠性,可以为用户提供可靠的服务。1.3 socket的简介所谓socket通常也称作“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络要求。在internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应不同的服务。socket连接过程:根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 服务器

25、监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。1.4 arm的简介arm(advan

26、ced risc machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的risc处理器、相关技术及软件5。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、dsp和移动式应用等。arm公司是苹果、acorn、vlsi、technology等公司的合资企业。arm将其技术授权给世界上许多著名的半导体、软件和oem厂商,每个厂商得到的arm公司(6张)都是一套独一无二的arm相关技术及服务。利用这种合伙关系,arm很快成为许多全球性risc标准的缔造者。进入21世纪之后,由于手机制造行业的快速发展,出货量呈现爆炸式增长,arm处理器占

27、领了全球手机市场。2006年,全球arm芯片出货量为20亿片,2010年,arm合作伙伴的出货量达到了60亿。arm商品模式的强大之处在于它在世界范围有超过100个的合作伙伴(partners)。arm 是设计公司,本身不生产芯片。采用转让许可证制度,由合作伙伴生产芯片。2007年底,arm的雇员总数为1728人,持有专利700项(另有900项正在申请批准中),全球分支机构31家,合作伙伴200家,年收入2.6亿英镑。 pxa270简介:ours-pxa270d 型开发板是以pxa270 处理器为核心的嵌入式入门级开发板。本电路板集成了处理器、存储器和多种串并接口,适合嵌入式学习,也方便进行二

28、次研发,是高集成度的嵌入式系统开发板。第二章 规划设计2.1 课题来源linux 操作系统作为一个开源的操作系统被越来越多的人所应用,基于linux系统的聊天系统优势在于使用方便快捷,易学易懂,具有即时性。尤其是对于企事业单位具有可靠性,能够实现消息的即时发布与收集。不需使用互联网,只需局域网既可实现通讯,省时省力。另外该系统对硬件的需求很低,不影响电脑的其他工作。因此制作一个linux 操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握linux平台上应用程序设计开发的过程,将大学四

29、年所学知识综合运用,以达到检验学习成果的目的。2.2 需求分析聊天室是一种广泛应用于网络的聊天方式,操作非常简单,功能也很丰富。聊天系统应该有即时,快速的特点。服务器端和客户端应该有不同的功能特性。对于客户端应该能够快速地检查是否能够连接到服务器端。能够正确的获得和反映当前好友在线情况。能够正确的与特定好友交流。能够及时地接收到服务器端的数据,并且能够即时处理数据,能够将处理结果反映给用户。聊天系统分为两个部分,服务器端和客户端。本论文以基于linux聊天客户端模块设计与实现为题,主要研究聊天系统的客户端。客户端应该完成的工作包括:1与服务器端建立通信通道,向服务器端发送信息。注册界面:首先与

30、服务器连接,如果连接失败,文件描述符是一个非正数,通过判断,以对话框的形式通知用户连接失败。如果用户名已经存在,服务器端返回协议“error”。如果注册成功,服务器返回协议“ok”,通过对服务器返回的字符串判断,客户端通过对话框的形式给予提示不同的信息。登陆界面:首先与服务器连接,如果连接失败,文件描述符室一个非正数,通过判断,以对话框的形式通知用户连接失败。如果用户名与密码不匹配或者重复登陆,服务器端返回协议“error”,如果登陆成功,服务器返回协议“ok”,客户端通过对协议的判断切换到聊天界面。聊天界面:首先判断客户端需求,通过用户的选择,向服务器发送一系列已经协商好的通信协议;如:选择

31、私聊则发送“所选用户名+聊天内容”,选择群聊则发送“all+聊天内容”。2接收来自服务器端的信息。通过服务器端的分析,服务器会向客户端发送信息,同时客户端当监听到有信息可接收时,会读出相应信息存放到内存当中。3完成客户端包括注册、登录、聊天三大板块。在完成以上三大板块的过程中,应该注意三大板块之间的联系。4全部完成后,将客户端程序移植到arm开发板上并实现。有了以上简单的分析,可以知道,解决上述四个问题,即完成了该聊天系统的核心。补充:由于技术方面的欠缺,我的聊天室系统没有应用数据库知识存放聊天记录。聊天记录是以隐藏文件的形式存放在整个系统的绝对路径下。没有实现留言功能,只有在线才能接收到别人

32、发送的消息。第三章 系统分析与设计方案3.1 聊天系统客户端的总体设计要点聊天系统的设计与普通网站的实际所考虑的因素有许多不同之处,普通网站设计需考虑对布局进入大量美化以及动画设计等等,而聊天室却只要提供满足访客双方直接实时聊天即可6。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:(一)实现思想在internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在tcp/ip环境下,实现服务器端和客户端两部分程序。(二)服务器端工作流程服务器端通过socket( )系统调

33、用创建一个socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind( ),就可以在端口进行侦听listen( )。如果有客户端连接请求,则在数组中选择一个空socket,将客户端地址赋给这个socket。然后登录成功的客户就可以在服务器上聊天了。(三)客户端工作流程客户端程序相对简单,只需要建立一个socket与服务器端连接,成功后通过这个socket来发送和接收数据就可以了。套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求是指由客户端的套

34、接字提出连接请求,要连接的目标是服务器端的套接字。连接确认是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。3.2 聊天系统客户端的设计步骤及功能模块划分(一)聊天系统客户端工作原理图3-1输入错误重新填写用户运行客户端应用程序填写用户名密码提交服务器用户信息合法,用户登陆到聊天室 接收服务器端的在线用户列表接收消息接收好友下线或登陆消息发送消息(群聊、私聊)图3-1 工作原理图3.3 聊天系统客户端各功能模块(一)注册功能模块用户进入聊天系统,点击登录模块上的注

35、册按钮,进入注册页面。页面框架由qt语言编译。功能有填写用户名、密码、重复密码;注册界面显示用户名、密码输入规则。当用户输入用户名、密码时,检验用户输入是否合法,输入合法则通过socket建立于服务器的连接,向服务器发送用户名、密码。服务器端对所接收的内容进行核对,如用户名密码可用,则返回相应信息。客户端接收到服务器发送过来的信息后,通知用户是否注册成功。注册模块发送到服务器的通信协议为:“regist:用户名:密码名”。 部分源码如下:regist:regist() /用户界面代码void regist:sure_fun() int fd2; char *p; char buf10=; fd

36、2=getfd(); qstring tmp,str; if(name_line-text()=all) /用户名不能为all qmessagebox:warning(this,tr(warning),tr(this name unable used!) ); name_line-clear(); return; if(name_line-text()=) /未输入用户名提示信息 qmessagebox:warning(this,tr(warning),tr(input a user name!); return; if(passwd_line-text()=) /未输入密码提示信息 qmes

37、sagebox:warning(this,tr(warning),tr(input a passwd!); return; qstring passwd1,passwd2; passwd1=passwd_line-text(); passwd2=repasswd_line-text(); if(passwd1=passwd2) /确保俩次密码相同 tmp=regist; tmp=tmp+:; tmp=tmp+name_line-text(); tmp=tmp+:; tmp=tmp+passwd_line-text(); p=(char *)qprintable(tmp); int i; i=w

38、rite(fd2,p,strlen(p); /向服务器写内容 if(iclear(); return; else qmessagebox:warning(this,tr(error!),tr(twice passwd is different !); passwd_line-clear(); repasswd_line-clear(); return; (二)登录功能模块用户进入聊天系统则直接进入登陆模块7,界面直接提示输入用户名、密码;当已经注册完成账号时,根据提示输入用户信息。客户端通过socket建立与服务器的连接,并将信息传递给服务器,由服务器判断输入是否正确。如用户名与密码不相符,则

39、提示信息。信息输入正确,则登陆成功,界面切换到聊天界面。登录模块发送到服务器的通信协议为:“login:用户名:密码”。部分源码如下:login:login() /登陆界面 void login:login_fun() int fd1=getfd(); char buf100=; char all_name4000 = ; qstring info,a,b; a=ledit1-text(); b=ledit2-text(); info = qstring(login)+:+a+:+b; write(fd1,(char *)qprintable(info),info.size(); /向服务器写

40、入内容 read(fd1,buf,sizeof(buf); /从服务器读入内容 if(strcmp(buf,relogin) = 0) /登陆失败提示消息 qmessagebox:information(this,login error!,repeat login!); return; if(strcmp(buf,ok) = 0) /登陆成功 write(fd1,ok,2); read(fd1,all_name,sizeof(all_name); qstringlist namelist = qstring(all_name).split(:); namelist0 = all; chat_u

41、i *chat=new chat_ui;chat-box-additems(namelist); chat-setfd(fd1,a); write(fd1,ok,2); close(); chat-show(); /切换到聊天界面 chat-ledit-setfocus(); if(strcmp(buf,error) = 0) /用户名与密码不匹配 ledit1-clear(); ledit2-clear(); qmessagebox:information(this,login error!,name or passwd error! ); (三)聊天功能模块 在本聊天系统客户端中,聊天功能

42、分为群聊与私聊8。当选择下拉菜单上的all时,所聊天内容为群聊,所有聊天室内的在线人员均能看见。当选择下拉菜单上的任何一个人时,则为与某人的私聊,此状态下的聊天内容只有当前选择人员可看。聊天过程中,聊天室内用户上线、下线都给予提示。有管理员账号,管理员可以任意踢出在线人员,被踢出用户则无法正常使用聊天室。聊天功能模块部分源码:chat_ui:chat_ui() /聊天界面 void chat_ui:setfd(int tfd,qstring name) /获取服务器上的文件描述符 fd = tfd; this-name = name; lsocket-setsocketdescriptor(f

43、d); void chat_ui:send_fun() /向服务器发送登录用户信息 qstring t,t1,t2; t1=box-currenttext(); t2=ledit-text(); t=t1+:+t2; write(fd,(char *)qprintable(t),t.size(); ledit-clear(); ledit-setfocus(); void chat_ui:get_mes() qstring str,status; str = lsocket-readall(); if(str.contains(qchar() /判断用户加入或离开 if(str0 != qch

44、ar() qstringlist info = str.split(); str = info0; status = info1; qcolor color = chattext-textcolor(); chattext-settextcolor(qt:red); chattext-append(status); chattext-settextcolor(color); else qstringlist info = str.split(); status = info1; qcolor color = chattext-textcolor(); chattext-settextcolor

45、(qt:red); chattext-append(status); chattext-settextcolor(color); return ; if(str.left(6) = *quit:|str.left(6) = *join:) /更新在线用户的列表 qstringlist all_name = str.split(:); all_name0 = all; box-clear(); box-additems(all_name); return; qstringlist mes = str.split(:); mes0 = ; if(mes0.left(3) = qstring(tex

46、tcolor(); chattext-settextcolor(qt:blue); chattext-append(mes0); chattext-append(mes1); chattext-settextcolor(color); else chattext-append(mes0); chattext-append(mes1); qdir dir(./); /创建本地聊天记录 dir.mkdir(chatrecord); qfile file(./chatrecord/+name); if(!file.open(qiodevice:append|qiodevice:text) retur

47、n; qtextstream in(&file); in mes0 n mes1 n; file.close(); (四)服务器与客户端之间的通信协议客户端/服务器模型工作时要求有一套为客户端和服务器所共识的惯例来保证服务能够被提供(或被接受),这一套惯例包含了一套协议,它必须在通信的两头都被实现。根据不同的实际情况,协议可能是对称的或非对称的。在对称的协议中每一方都有可能扮演主从角色;在非对称协议中一方被不可改变地认为是主机,而另一方则是从机。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在客户进程和服务进程。一个服务程序通常在一个众所周知地地址监听客户对服务地请求,也就是说,服务

48、进程一直处于休眠状态,直到一个客户对这个服务地址提出连接请求。在这个时刻,服务程序被“惊醒”并且为客户提供服务-对客户的请求作出适当的反应。这一请求/响应的过程可以简单地归纳为:服务器监听,客户端请求,连接确认。主要实现过程:1客户端发送消息给服务器端首先判断客户端需求,通过用户的选择,向服务器发送一系列已经协商好的通信协议;如:选择私聊则发送“所选用户名+聊天内容”,选择群聊则发送“all+聊天内容”。2接收服务器端发来的消息通过服务器端的分析,服务器会向客户端发送信息,同时客户端当监听到有信息可接收时,会读出相应信息存放到内存当中。3显示消息从内存当中读出信息,通过字符串解析,将内容按照不同颜色显示到聊天窗

温馨提示

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

评论

0/150

提交评论