《毕业论文——基于Linux平台的IM软件》由会员分享,可在线阅读,更多相关《毕业论文——基于Linux平台的IM软件(15页珍藏版)》请在金锄头文库上搜索。
1、基于Linux平台的局域网可语音的IM软件的设计与实 作者:肖亚统 专业:软件工程 指导老师:陈生庆 摘要随着计算机网络的日益普及人们通过网络进行交流显得越来越重要。于是出现了一系列的通信软件。 自1990s四位以色列人推出的ICQ后,IM首次出现,凭借实时在线的交互特性迅速风靡全球。如今,M软件正逐渐成为一个集合了文字、视频、音频业务以及多种增值业务的多媒体网络通信软件,凭借其所具有的廉价性和方便性以及功能不断完善,IM已经和WWW、Email等一起成为网民们最喜爱的网络服务之一。尤其在国内,腾讯QQ普及率远高于Email,在部分中国网民眼中上网基本等价于使用QQ等。2014年4月11日晚间
2、,腾讯QQ同时在线用户数突破2亿。本毕业设计就是模拟QQ聊天软件,开发一个基于Linux平台的局域网实时语音通信软件。系统采用C/S架构,基于Linux平台开发,采用C+编程语言,由服务器端和客户端程序组成,并使用QT进行图形界面的设计。主要实现的是聊天软件的部分功能,即文字聊天、语音聊天、保存用户消息等等功能,主要完成任务包括服务器模块的设计实现、文字聊天、保存用户消息等等功能。通过运行、测试与分析,该功能聊天软件运行稳定、可靠,具有一定的实用价值。关键词:Linux QT 局域网 网络 音频 多线程 IM C/SAbstractAlong with the high-speed devel
3、opment of the computer network echnology, various of applications based on network was born, like information releasing,data sharing . The development of the LAN is the ame fast. Some governments, enterprises and schools constitute a LAN first, then join into INTERNET. So the instant messenger in LA
4、N was borned. This dissertation focuses on the designing and implementation of Communication software on LAN. And a Communication software is built using QT on Linux. First, the Development environment, the Background and the technology are briefly introduced. Then the requirements analysis and syst
5、ematic design of a Communication software is discussed in detail. And the implementation details of each function module, is given. Last, using the VM to test the software. Keywords: Linux , QT, LAN, NetWork目录一、前言1.1 课题背景1.2 国内外研究现状及发展趋势1.3 本课题的研究的目的和意义2、 关键技术2.1 Linux操作系统2.1.1 什么是Linux系统准确的说,是指Linu
6、x的kernel(系统的核心程序),其内核版权属于Linus Torvalds在GPL(GNU General Public License)版权协议下发行, 任何人都可以自由的复制(copy), 修改(change), 套装分发(distribute),销售,但是不可以在分发时加入任何限制, 而且所有原码必须是公开的,所以任何人都可以无偿取得所有执行文件和源代码。 对于Linux用户和系统管理员来,Linux是指包含Linux kernel、utilities (系统工具程序)以及application (应用软件)的一个完整的操作系统。Linux的应用软件是由自由软件基金会(FSF)开发的
7、,全世界许多热心的程序员为Linux开发或移植了很多应用程序,包括X-Windows、Emacs、TCP/IP网络(包括SLIP/PPP/ISDN)等等现在Linux(包括内核和大量的应用程序)光是执行程序就已经达到200M,完全安装后的规模将更大(大约500M左右)。 从本质上讲Linux是Unix的”克隆”或Unix风格的操作系统,在源代码级上兼容绝大部分的Unix标准(如IEEE POSIX),它遵从 POSIX规范,例如对于System V来说,把其上程序源代码拿到 ,Linux下重新编译后就可以运行。 Linux的标志是可爱的企鹅,至于为什么选用企鹅Linus是这样说的,别的都被他人
8、用了企鹅,不是也非常可爱吗?!由Linux作者发布的仅仅是一个内核而己有一些公司或组织把内核、源代码及相关的应用程序组织在一起发行, 于是就产生了不同的Linux发行(distributor)版本, 比较著名的发行版本有RedHat、Ubuntu 、Debian 等。2.2.2 Linux的发展历史Linux的历史可以追溯到1990年Linus Torvalds还是芬兰赫尔辛基大学的一名学生用汇编语言写了一个在80386保护模式下处理多任务切换的程序。1991年10月5号发布了Linux 0.0.2版本,这个版本已经可以运行bash(一种用户与操作系统内核通讯的软件)和gcc(GNU C编译器
9、)了。 Linus从一开始就决定自由扩散Linux、包括源代码他把源代码发布在网上随即就引起爱好者的注意,他们通过互连网也加入了Linux的内核开发工作,一大批高水平程序员的加入,使得Linux达到迅猛发展。到1993年底,Linux 1.0终于诞生。Linux 1.0已经是一个功能完备的操作系统了,其内核写得紧凑高效,可以充分发挥硬件的性能,在4M内存的80386机器上也非常好。 Linux加入GNU并遵循公共版权许可证(GPL)由于不排斥商家对自由软件进一步开发不排斥在Linux上开发商业软件,故而使Linux又开始了一次飞跃,出现了很多的Linux发行版,如Slackware、Redha
10、t、TurboLinux等十多种,而且还在增加,还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移植到Linux上来,如今很多IT界的大腕如IBM、Intel、Oracle、Novell等都宣布支持Linux! 商家的加盟弥补了纯自由软件的不足和发展障碍,Linux得以迅速普及。2.2.3 UbuntuUbuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(译为友帮拓或乌班图),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu基于Debian发行版和GNOME桌面
11、环境,与Debian的不同在于它每6个月会发布一个新版本。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。Ubuntu 的版本号是根据其发布版本的日期而定。版本号由该次发布的年份和月份组成,并未反映其实际版本。Ubuntu的首次发布(Warty Warthog)是在2004年10月,因此该版本为4.10。每六个月发布一个新版本,而每两年发布一个长期支持版本(LTS)。 Ubuntu Jaunty Jackalope于2009年4月23日发布,因此版本号为9.04。Ubuntu Kar
12、mic Koala,即Ubuntu 9.10,于2009年10月29日发布。前一个长期支持版本(开发代号为Lucid Lynx)于2010年4月发布,其版本号为10.04 LTS。版本Ubuntu 11.10,开发代号:“Oneiric Ocelot”,已经于2011年10月13日发布并提供下载。我用的是Ubuntu12.04.Ubuntu 12.04(代号Precise Pangolin) 已经于2012年的4月26日发布。2.2 数据库SQLiteSQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资
13、源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有13个年头,SQLite也迎来了一个版本 SQLite 3已经发布。SQLite是遵守ACID关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。不像常见的客户-服务器范
14、例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。2.3 开发语言C+C+程序设计语言是由来自AT&T Bell Laboratories的Bjarne Stroustrup设计和实现的,它兼具Simula语言在组织与设计方面的特性以及适用于系统程序设计的C语言设施。C+最初的版本被称作“带类的(C with Clas
15、ses)Stroustrup,1980,在1980年被第一次投入使用;当时它只支持系统程序设计和数据抽象技术。支持面向对象程序设计的语言设施在1983年被加入C+之后,面向对象设计方法和面向对象程序设计技术就逐渐进入了C+领域。在1985年,C+第一次投入商业市场Stroustrup,1986Stroustrup,1986b。在1987至1989年间支持范型程序设计的语言设施也被加进了C+Ellis,1990Stroustrup,1991。 随着若干独立开发的C+实现产品的出现和广泛应用,正式的C+标准化工作在1990年启动。标准化工作由ANSI(American National Standard Institute)以及后来加入的ISO(International Standards Organization)负责。1998年正式发布了C+语言的国际标准C+,1998。在标准化工作进展期间,标准委员会充当了一个重要的角色,其发布的C+标准之草案在正式标准发布之前,一直被作为过渡标准而存在。 2.4 Qt编程软件 Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序