Linux中仿QQ程序研究与设计
摘要:Linux环境下大部分图形用户界面程序是用GTK+实现的。介绍了用GTK+开发应用程序的基本思想和方法,叙述了基于GTK+和Glade的界面布局方式和信号捕捉的实现,在研究GTK+编程技术的基础上,结合多线程和套接字编程技术实现了一个仿QQ程序。
关键词:GTK+;Glade;多线程;套接字;仿QQ
GTK+是在GDK(GIMP Drawing Kit)的基础上创建的一个用于创造GUI的图形库,采用具有面向对象技术的C语言开发框架,这使它在开发GUI应用程序时能和操作系统紧密结合,同时又具有简洁性。它提供了窗口、按钮、列表框和组合框等很多构件,可以构造复杂的用户界面。GTK+遵循LGPL许可证,可以不用任何花费来购买许可证和使用权,用它来开发开源、自由软件,甚至是封闭源代码的商业软件。
GTK+是将GTK、GDK和GLIB集成在一起的开发包,多用在Linux/UNIX平台上开发GUI软件。
GTK+具有的特性:动态类型系统,用C语言编写的对象系统,实现了继承、类型检验以及信号/回调函数的基础结构;类型和对象系统不是特别针对GUI的;Gtk Widget对象使用对象系统,它定义了GTK+图形组件的使用接口;大量的Gtk Widget构件。
在Linux上通常利用GTK+库开发GUI应用程序,涉及的主要概念有:构件、容器、消息及回调函数。
1.2Glade
Glade是GTK+图形用户界面产生器,是个Visual Programming Tool,和Windows平台的Visual Tools(VB、C#)类似。使用Glade2和Glade3制作界面是不同的,Glade2和Glade3的主要区别是:Glade2会自动生成makefile等文件,而Glade3只是用来生成界面,然后采用libglade和GtkBuilder调用.glade文件,这样的好处是代码和界面完全分开,避免代码的改变又需要重新编译。本项目采用Glade3设计图形用户界面,操作系统是Centos 6.2。
2软件结构
软件功能需求:登录功能、申请新用户的功能,客户可以通过服务器转发,实现一对一的聊天,客户端程序可以显示在线好友,应该具有易用、美观的图形界面,后台管理员。
2.1服务器
利用TCP通信。①上线:启动监听socket进行监听,对用户上线请求,进行输入用户名判断是否已存在,返回应答;并且向已登录的其他用户传送该用户的信息:用户名,ip地址,聊天的port,接收文件的port;②下线:客户端程序关闭,服务器能及时知道用户下线,并将该下线消息传给各在线客户。
2.2客户端
①登录上线,TCP和服务器相连;②聊天/传文件:登录成功之后,新建UDP聊天socket,新建TCP传文件socket进行listen,并将聊天接收端口和文件接收端口发送给服务器;③下线,和服务器断开
连接。
2.3程序流程
3详细设计及关键代码
3.1登录交互界面
3.2用户列表界面
用户列表界面如图4所示,采用了一个GTK中的高级组件TREEVIEW。这里新添加的是对列表中每行双击事件的处理。
3.3聊天窗口
图5聊天窗口
linux在线编程
3.4文件传输界面
4结语
XWindow和GNU编译系统已成为Linux/UNIX上最主要的软件系统,GTK+是两者结合的编程开发包。本文在对GTK+技术研究的基础上,设计出一个仿QQ程序。GTK+正以大家熟悉的底层编程语言和实用快捷的开发工具,在Linux下的GUI编程领域发挥着越来越重要的作用。
参考文献:
\[1\]张同光,潘红.Linux中GTK+编程技术研究及其应用\[J \].软件导刊,2007(8).
\[2\]朱汉,苏厚勤,吴丰科.Linux GUI开发工具Gtk+技术应用研究\[J\].计算机应用与软件,2009(1).

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。