013
GTK基于Linux的网络聊天室的设计与实现样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
本设计包含内容:源代码+毕业论文
论文大概:
基于Linux的网络聊天室的设计与实现
摘要:基于资源共享和软件自由的思想,linux成为越来越多技术人员的理想之国,并且不断吸引着更多的人投身这个梦想。作为一个稳定的多用户类unix网络操作系统,linux能提供完美的网络解决方案,出色的胜任网络构建和维护。出于对unix技术优势的出色继承和延续,linux对多种网络协议的支持使得网络解决方案极大的丰富,本服务器所采用的UDP协议,为广播方式的通信,由于不建连接使得通信简单,有弹性。网络聊天室做为互联网热门,自由的沟通和信息的发布成为许多网络爱好者的乐事。成功的实现linux下聊天室的服务端无疑是对网络自由的精神的顶礼膜拜。
本文详细的描述了基于UDP协议的网络聊天室的实现,论述了当前大环境下linux对软件业的冲击,接着介绍了linux下c开发环境,包括编辑器EMacs和编译器GCC,当然还有图形开发工具GTK,关键技术中论述了网络实现的可行方案和DES加密算法,接着分析了聊天室的可行性,最后介绍了设计实现的具体方法,包括文件数据库、DES加密、UDP网络算法、和GTK图形界面设计。设计实现了聊天室的启动服务、添加、删除、查询用户,踢出有不法言行用户、对用户资料加密等基本功能,并通过UDP协议和客户端实现联接。设计还有很多不足之处、可以进一步优化的地方和设计过程中的心路历程在总结中都有阐述。
关键字:聊天室设计、UDP、DES加密算法、网络方案、GTK图形界面、文件系统数据库
1 Design based on network chatroom of Linux and
realizing
Abstract: On the basis of the thought with free
resource-sharing and software, linux becomes more and more technical
staff's ideal country, and is attracting more persons to join in
this ideal constantly。As a steady multi-user unix network operating
system, linux can offer the perfect network solution , the
outstanding one is competent at network struction and safeguard. Out
of the inheritting and extending splendidly of technological
advantage to unix, the abundance that linux support to many kinds of
procotols makes the network with great solution, UDP agreement that
this server adopted, in order to broadcast the communication of the
way, because it make communication simple to build joining ,
flexible. Network it is hot for Internet for chatroom not to make,
free communication and issue of information become a lot of network
pleasure of fan. Successful realization linux makes the service end
of the chatroom and is undoubtedly paid homage to by spirit free to
the network.
Detailed realization based on network chatroom of
UDP agreement of description of this text, having expounded the fact
linux under the heavy present environment to the impact of the
software industry, then has recommended c development environment
under linux, including editing machine EMacs and compiling device
GCC, certainly there is figure developing instrument GTK , has
expounded the fact in key technology feasible scheme and DES that
the network realizes encrypt algorithms, then has analysed the
feasibility of the chatroom , introduced and designed the concrete
method to realize finally, including file database , DES encrypt,
UDP network algorithm, and GTK figure interface is designed. Design
the arrival which has realize the chatroom and serve , add , delete
, inquire about users, basic function of kicking out of illegal
words and deeds user , encrypting to user's materials etc., and
realize linking through UDP agreement and customer end. Is it have a
lot of weak point , place and mind experience of design process that
can optimize further explain in summarizing to design.
Keyword:chat room design .UDP.DES encrypt algorithm.GTK figure
interface.file system and database
目录
1 背景 1
1.1 linux介绍 1
1.2
Linux的昨天 1
1.3 Linux的今天 2
1.4
Linux的明天 2
2 LINUX下C程序开发环境 3
2.1
Emacs介绍 3
2.2
GCC/GDB介绍: 3
2.2.3调试和剖析选项 5
3
课题研究方法及关键技术 7
3.1 SOCKET编程技术 : 7
3.2
GTK图形程序开发 8
3.3 多线程技术 : 8
3.4 DES加密算法
: 8
3.5 服务器端方案的选择 9
4 需求分析 9
5
具体方案 11
5.1 后台数据库 11
5.2 DES加密算法 12
5.2.1
具体算法设计 12
5.2.2 DES算法理论图解 14
5.2.3
加密算法源代码 15
5.3 服务器算法 29
5.3.2 服务器源代码 34
5.4
GTK图形界面 47
5.4.1
GTK开发 47
6 结束语及致谢 56
6.1 结束语 56
6.2
致谢 56
8
参考文献 57
9 附录 58
2 1
背景
2.1 1.1
linux介绍
Linux是一种针对PC计算机和工作站的操作系统,它具有像Windows和Mac那样的功能齐全的图形用户界面(GUI,Graphical
User Interface)。Linus
Torvald和其它的遍布世界各地的编程人员共同开发的。作为一种操作系统,它具有与Unix,Mac,Windows和Windows
NT同样的功能。
提到Linux我们不能不提GNU和Unix。Richard
M.Stallman建立的自由软件联盟出版了两种许可证,GNU通用公共许可证(GNU Gneral Public
License,GPL)和GNU函数库通用公共许可证(GNU Library Gneral Public
License,LGPL)。大部分GNU工程的软件和文档是以GNU通用公共许可证发行的,但是有一些库是以GNU函数库通用公共许可证发行的。按照GNU通用公共许可证的规定,Linux的源代码可以自由获取,这满足了我们学习该系统的强烈愿望。GPL充分体现了Stallman的思想:只要用户所做的修改是同等自由的,用户可以自由地使用、拷贝、查询、重用、修改甚至发布这个软件。通过这种方式,GPL保证了Linux(以及同一许可证下的大量其他软件)不仅现在自由可用,而且皮后经过任何修改这后都仍然可以自由使用。
Unix是由AT—T贝尔实验室的Ken
Thompson和Dennis
Ritchie于1969年在一台已经废弃了的PDP-7上开发的;最初它是一个用汇编语言写成的单用户操作系统。后来,他们又在PDP-11上用C语言重新编写(发明C语言的部分目的就在于此),把Unix做成为了一个文本处理系统,这使Unix在贝尔实验室得到广泛的应用。Unix的最初版本免费提供给许多知名的大学的计算机系使用。加州大学伯克利分校的计算机系就是其中的一名,并地Unix进行了修改增加了许多新的特点,这就是主为人知的BSC版本的Unix。与此同时,其它独立开发的Unix版本也开始萌生。Unix不断发展了,各种版本被应用到不同的计算机使用。而Linux最初是专门为基于Intel的个人计算机设计的。
2.2 1.2
Linux的昨天
1991年,一名叫Linus
Torvalds的芬兰大学生对Unix各种版本对于80386类的机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System
V
的优点,同进摒弃了它们的缺点。他独立把这个内核开发到0.02版,这个版本已经可以运行gcc、bash和很少的一些应用程序。后来,他又开始了在因特网上寻求广泛的帮助。
1994年,Linux已经升级到1.0版本。它的源代码量也呈指数形式增长,实现了基本的TCP/IP功能,此时Linux已经拥有大约10万的用户。
2.3 1.3
Linux的今天
作为一各服务器级的操作系统,Linux已经成熟了。现在的Linux内核由150多行代码组成,能作为Web服务器平台,也为越来越多的商业用户提供文件和打印服务。它既被当作邮件服务器的一种候选平台,也被当作一种强壮而安全的防火墙。
Linux的企业级特性,比如支持多处理器、支持大型文件系统、日志文件系统以及密集型计算和高可用性集群技术,也逐步成熟。
桌面上的Linux也在继续完善。KDE桌面提供的图形用户界面在易用性和可配置方面都能和微软的Windows相媲美。
2.4 1.4
Linux的明天
Linux最强大的生命力在于其公开的开发过程。每个人都有可以自由获取内核源程序,每个人都有要不得以运载源程序加以修改,而后他人也可以自由获取你修改后的源程序。Linux这种独特的自由流畅的开发模型已被命名为bazaar(集市模型)。Bazaar开发模型通过重视实验,征集并充分利用早期的反馈,对巨大数量的脑力资源进行平衡配置,可以开发出更优秀的软件。本联盟就是想通过bazaar开发模型,在网上召集一些Linux的爱好者,开发出更优秀的操作系统或软件。
3
4
5 4
需求分析
就实现基于UDP的网络聊天室服务器端,可预见的需要有稳定可靠的网络解决方案和安全有效的加密算法,保证通信的稳定和数据的安全。对于在LINUX在整合GNOME后开始表现出更为强大的生命力,有必要能在窗口终端显示出图形化的控制台,便于管理员进行简单交互的窗口操作,保证管理使用的准确,迅速,开发成交互的图形窗口界面。由于LINUX对C的完美的支持,采用C编程和编译机。
对于服务器运行的过程如下图所示:
失败
成功
失败
成功
图4 服务器运行图
6 5 具体方案
6.1 5.1
后台数据库
打印所有用户信息的模块,具体实现为,先打开用户文件并判断开文件是否成功,fopen(const char
*path,const char
*mode);函数返回文件描述符打开方式有’r’.’r+’.’w’.’w+’.’a’.’a+’几种打开方式分别代表,只读打开,读写方式、创建并可写、创建并可读写、只写添加方式(不存在则生成)、读写添加方式。成功的打开文件后,必须确保文件当前指针返回到文件头,调用rewind()实现回归文件指针,从文件头开始遍历数据库文件,采用fread(*ptr,size_t
size,size_t nmemb,FILE
*stream)其中参数*ptr为目的数据地址用来保存从文件中读出的结构,size为读多少长度的字节,*stream为文件描述符,指向目标文件,并将所读到的数据在对话框中打印,直到文件当前指针为文件尾,这里用feop(FILE
*stream)判断文件是否读完,读完则显示打印文件对话框。
查询用户模块同样涉及到了读文件和遍历,只是在读结构后,即比较所查询用户的ID或用户名是否和当前结构用户名或ID相同,相同则表示找到目标用户,并在文本框中打印该用户信息,如果读到文件尾还没有找到匹配的用户则返回无目标用户的信息。
实现删除必须先查询到目标用户,方法和查询用户相同,找到目标用户则更改用户权限位,将其置为不可用,并回写文件,为确保写回正确的位置先用fseek回溯一个数据结构长度的位置,再写结构fwrite()。为实现禁止用户功能即“踢人”则必须由服务器端往套接口发送信息指示客户端关闭客户端主程序。
套接口数据流
图5.3.1_1 服务器结构图、
sendto()/recvfrom fwrite()/fread()
图5.3.2_2 服务器总结构图
服务器架构上有前台和后台两部分,数据库对于普通用户为不可见的,只有管理员有操作数据库的权限,并由文件数据库为前台提供用户资料的服务;包括注册认证,验证用户合法性、检索用户、查询用户、删除用户,前台服务器处理从各个客户端发送过来的信号,处理各种信号并响应。
程序运行截图:
图9.1
注册新用户
图9.2 客户端主程序
图9.3
管理员登录
图9.4
打印用户信息
图9.5 查询用户窗口