兼职吧 > 毕业论文 > 计算机论文 > 正文

在Linux平台下开发和设计聊天软件

来源:www.jianzhi8.com发布时间:2012-06-01 浏览:2102次

在网络无所不在的今天,在Internet上,有ICQ、MSN、Gtalk、OICQ等网络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。

Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。但对很多习惯于Windows操作系统的人来说,Linux的操作不够人性化、交互界面不够美观,这给Linux操作系统的普及带来了很大的阻碍。因此制作一个Linux 操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触Linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握Linux平台上应用程序设计开发的过程,将大学四年所学知识综合运用,以达到检验学习成果的目的。

1.1 网络聊天软件的发展及现状
网络的诞生从某种意义上来说改变了我们的生活,它将这个世界的上不同地域的人之间的距离拉近了。伴随着网络的诞生,网络聊天软件也随之而来。最初的网络聊天软件只是有简单的文本界面,功能也十分有限,随着技术的不断发展与强大,拥有更多功能和美观界面的聊天程序走进了我们的生活,也有越来越多的人将网络聊天软件作为他们日常生活交流和通信的工具。

网络聊天软件在国外有ICQ等,在国内主要有OICQ、Ticq和一些基于网页的即时通讯工具,像Chinaren网站上的WebMaster等等,都做得即美观,且功能强大,OICQ现在拥有非常大的用户群。

现在也有很多在网络上不使用服务器的通讯软件,这种软件小巧且方便,也能解决一部分问题。但是有服务器的通讯软件,有着不可比拟的优势:可以发送离线消息,不管用户当时是否在线,下次上线时,就可以看到这条消息了。可以保存用户的个人信息或个人简介,供人查看。而且,无服务器的通讯软件,是以机器为通讯单元的,而有服务器的聊天软件是以人为通讯单元的。所以,带服务器的聊天软件在网络上,有着非常广泛的用途,为网络上的通讯带来了极大的方便,它使人与人之间的交流不再只局限于某一个范围,并且它的开销也是很小的,你只需要拥有一部可以联网的PC机就足够了!

1.2 TCP/IP协议简介
TCP/IP是国际互联网所采用进行网际互连的通信协议。实际所称的TCP/IP协议包括了在国际互联网络应用的一组协议,互联网协议族是此协议族的另一个名字。

1.2.1 TCP协议简介
因为我们这个程序所采用的是面向连接的TCP协议,所以我们这里就只对TCP(传输控制协议)这一部分作详细的介绍。

TCP:传输控制协议(TCP:Transmission Control Protocol)

传输控制协议是一个 TCP/IP 组中能够实现可靠数据传送的传输层协议,并通过顺序响应能实现对应用程序的虚拟连接服务,在必要的时候进行包转发。与 IP 协议相结合,TCP 代表了网络协议的核心。

大多数网络应用程序是在相同的机器上运行的,计算机上必须能确保目的地的应用程序从源地址处获得数据包,及源计算机上的应用程序的回复获得选择的路经。这一过程是通过使用 TCP 的“端口号”完成的。网络IP地址和端口号的连接要达到唯一的标识,我们称之为“套接字”或“端点”。为了可靠通信,TCP 在端点间建立了连接或虚拟电路。

TCP 服务提供了数据流传输、可靠行、有效流控制、全双工操作和多路复用技术等。

关于数据流传输,TCP 发送一个由序列号定义的无结构的字节流。这对应用程序有利,因为在被送出 TCP 之前应用程序不需要划分成块,TCP 可以将字节整合成字段,然后发送给IP。

TCP 是面向连接的端到端的可靠协议,并保证传送数据包的顺序,而顺序是用一个响应序号来保证的,这个响应序号告诉接收者发送者期望的下一个包。如果在规定时间内,没有收到关于这个包的确认响应,则需要重新发送此包。TCP 的可靠机制允许设备处理丢失、删除及读错的包。暂停机制允许设备监测丢失的包并请求重发。

TCP 提供了有效流控制。当向发送者返回发送确认响应,接收 TCP 进程就会暗示最高序列号,它能接收并保证不会发生溢出。

全双工操作:TCP 进程能够同时发送和接收包。

TCP 中的多路技术:大量上层同时会话在单连接时进行多路复用。

1.2.2 UDP协议简介
UDP协议是英文User Datagram Protocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。

与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。

UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。

1.3 套接字简介
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。

区分不同应用程序进程间的网络通信和连接,套接字主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。通过将这3个参数结合起来,与一个Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务

1.4 开发平台简介
1.4.1 Linux系统简介
Linux 操作系统是UNIX 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。

GNU 计划和自由软件基金会(the Free Software Foundation - FSF)于 1984 年创办。旨在开发一个类似 Unix、并且是自由软件的完整操作系统:GNU 系统。

在Linux平台上运行的软件都是免费使用的,且你可以随意的改动代码部分,只要他们是完全基于GNU的。

1.4.2 Gtk+图形开发库简介
Gtk+(GIMP Toolkit,GIMP工具包)是一个用于创造图形用户接口的图形库。Gtk+是基于LGPL授权的。

Gtk+图形库使用一系列称为“构件”的对象来创建应用程序的图形用户接口。它提供了窗口、标签、命令按钮、开关按钮、检查按钮、无线按钮、框架、列表框、组合框、树、列表视图、笔记本、状态条等构件。可以用它们来构造非常丰富的用户界面。在用Gtk+开发Gnome的过程中,由于实际需要,在上面的构件基础上,又开发了一些新构件。一般把这些构件称为Gnome构件(与Gtk+构件相对应)。这些构件都是Gtk+构件库的补充,它们提供了许多Gtk+构件没有的功能。从本质上来说, Gtk+构件和Gnome构件是完全类似的东西。GTK本质上是面向对象的应用程序编程接口(API )。虽然完全是用C写成的,但它仍然是用类和回调函数(指向函数的指针)的方法实现的。

1.4.3 Gnome的开发结构简介
只使用Gtk+ 构件也可以开发出优秀的Linux应用程序,但是Gnome构件,特别是GnomeApp、GnomeUIInfo等,使开发界面一致的应用程序变得更加容易。Gnome的一些新特性,如popt参数分析,保存应用程序设置等也是Gtk+构件所没有的。

Gnome的开发架构包含以下一些内容:

1. 非Gnome 库:

2. Gnome库:

3. 其他库

这些库一般被使用在Gnome应用程序中,但它不是Gnome-libs 专属的部分。

1.4.4 Glade集成开发工具简介
Glade是面向GTK+/Gtkmm的图形界面开发工具。它向用户提供可视化的界面设计环境,并以XML文件的格式进行保存。Glade提供了一个类库,在程序运行的时候,它可以通过读取XML文件而生成相应的程序界面,从而达到了程序代码逻辑与用户界面的完全分离。另一方面,有另一个工具(glade--)可以用来把这些XML文件直接生成相应的Gtk+/Gtkmm代码。对于比较小型的项目,这种方法是比较适用的。

这种通过XML对界面进行描述的特性极大地增强了程序的灵活性,界面的设计与代码的编写可由相关的人员进行。也许这是以后桌面应用程序开发的一个方向。

1.4.5 编程语言和编程工具简介
因为C语言是平台适应性最强的语言,差不多每种平台上都会有一个C编译器。C语言也更易移植,因而,在Linux下编程的最佳语言应该是C语言,Linux上的很多应用程序就是用C语言写的。因为Gtk+ 和Gnome是用C语言编写的,所以在开发Linux下的GUI程序时使用C语言是非常方便的。

Linux发布版本中都提供了C编译器gcc,它目前的版本是4.1。

Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30% gcc 编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。

调试器GDB能让你观察另一个程序在执行时的内部活动,或程序出错时发生了什么。

GDB主要能做四件事(包括为了完成这些事而附加的功能),帮助用户找出程序中的错误。

运行程序,设置所有的能影响程序运行的东西。

保证程序在指定的条件下停止。

当程序停止时,让用户检查发生了什么。

改变程序。那样用户可以试着修正某个bug引起的问题,然后继续查找另一个bug。

 

文章来源于兼职吧:http://www.jianzhi8.com/lunwen/4791.html