一种远程管理Linux系统工具的设计与实现
毕业论文-远程管理Linux系统的设计与实现

远程管理Linux系统的设计与实现摘要将效仿Linux下的Terminal,也就是说,本文要完成的是一个伪终端的设计。
为了实现远程管理Linux系统,就需要有一种远程管理Linux的系统工具软件,Webmin就是一种比较好的B/S模式软件,而本课题以C/S模式实现,该工具仿照Linux下终端的工作方式,使用命令行对Linux系统进行管理,能够完成一定数量的管理功能。
该工具使用C/S模式设计,在客户端,使用GTK+编程编写用户界面,在服务器端,使用Linux下特殊函数完成对系统的管理操作,而服务器与客户机之间的通信则是通过socket网络编程实现的。
本文所设计的远程管理工具是在网络上由一台计算机(主控端/客户长久以来,Linux一直是应用比较广泛的操作系统之一,基于命令行的系统管理是管理Linux系统的一种重要手段。
本设计要完成的是一个基于Linux命令行的系统管理工具,它的外观和使用方法端)远距离的控制另一台计算机(被控端/服务器端),这里的远程不是字面意思的远距离,而是指通过网络控制远端计算机,大多数时候远程管理往往所指的是在局域网中的远程控制,当使用者坐在主控端计算机前面时,就如同坐在被控端计算机面前一样,可以关机、重启,可以查看并阅读某一路径下的文件等功能。
关键词系统管理;服务器;客户端The Design and Realization of RemoteManagement Linux SystemAbstractIn a pretty long time, Linux is always one of the most popular operating system. and people use command-line to perform management in this system.The aim of the design is a management tools based on the Linux command line system, it will follow the appearance and way of using the Linux Terminal. that is a pseudo Terminal design.We need a remote-system-managing tool in hand in order to manage the Linux system without standing in front of the Server. The Webmin has already been there as an example of the B/S model, but in this subject we will design a software according to the C/S model. This tool is modeled on the terminal-managing-tool of the Linux, and uses the command line on Linux system administration, to complete a certain number of management functions. The tool is designed in C/S model, so in the client side, we write the programming interface with GTK+, and in the server side, we use some special functions under the Linux system to complete management operations. Between server and client, socket network communication is through Programmatic.In this paper, the remote management tool is designed by a computer in the network (master server/client) remote control another computer (charged with client/server), the remote is not literally over a long distance, but to control the remote computer through the network, most of the time the remote management is often referred to in the local area network (LAN) remote control, when the user sitting in front of the main control computer, like sitting in front of accusedof client machines, you can shutdown, restart, can view and read a directory of files, and other functions.Keywords system management; server; client目录摘要 (I)Abstract (II)第1章绪论..................................................................................................... - 6 -1.1 课题背景.............................................................................................. - 6 -1.2 国内外发展现状.................................................................................. - 7 -第2章GTK编程............................................................................................. - 9 -2.1 GTK简介............................................................................................... - 9 -2.2 开发环境的搭建................................................................................ - 10 -2.3 常用的GTK构件................................................................................ - 12 -2.3.1 窗口构件..................................................................................... - 12 -2.3.2 组装盒控件和按钮控件............................................................. - 12 -2.3.3 编辑控件..................................................................................... - 13 -2.3.4 滚动条控件................................................................................. - 14 -第3章套接字编程....................................................................................... - 15 -3.1 套接字概述........................................................................................ - 15 -3.2 面向无连接的套接字通讯................................................................ - 15 -第4章多线程编程....................................................................................... - 17 -4.1 线程简介............................................................................................ - 17 -4.2 多线程优点........................................................................................ - 17 -第5章客户端程序设计............................................................................... - 20 -5.1 设计思路............................................................................................ - 20 -5.2 主界面各功能模块的实现................................................................ - 21 -5.3 客户端程序各功能函数介绍............................................................ - 27 -5.3.1 建立socket ................................................................................... - 27 -5.3.2 用于发送信息的函数................................................................. - 27 -5.3.3 用于接受信息的函数................................................................. - 27 -5.3.4 客户端图形界面初始化函数..................................................... - 27 -5.3.5 用于获得输入文本并发送的函数............................................. - 27 -5.3.6 用于显示接收信息的函数......................................................... - 28 -第6章服务器端程序设计........................................................................... - 29 -6.1 设计思路............................................................................................ - 29 -6.2 服务器程序各项功能实现................................................................ - 30 -6.2.1 通信实现..................................................................................... - 30 -6.2.2 字符操作..................................................................................... - 31 -6.2.3 文件读写..................................................................................... - 32 -6.2.4 数据传送..................................................................................... - 33 -结论............................................................................................................... - 35 -致谢............................................................................................................... - 36 -参考文献....................................................................................................... - 37 -附录A 客户端建立socket代码.................................................................... - 38 -附录B 向服务器发送信息函数代码 .......................................................... - 40 -附录C 客户端接收信息函数代码 .............................................................. - 41 -附录D 客户端图形界面初始化函数代码.................................................. - 42 -附录E 客户端获得输入文本并发送的函数代码 ...................................... - 46 -附录F 外文文献翻译................................................................................... - 48 -第1章绪论1.1课题背景Linux是目前应用最广泛前景最好的操作系统之一,它具有极其强大的网络功能和源代码开放的特点。
Linux系统远程管理工具使用Python编写的Linux远程管理工具

Linux系统远程管理工具使用Python编写的Linux远程管理工具Linux系统远程管理工具是一种能够使用Python编写的远程管理工具,它可以帮助系统管理员在远程环境下有效地管理Linux系统。
本文将介绍Linux系统远程管理工具的使用,并详细讨论其基本功能、优势以及使用步骤。
一、基本功能Linux系统远程管理工具具有以下基本功能:1. 远程登录:用户可以通过该工具远程登录到Linux系统,并在命令行界面中执行各种操作,如查看系统信息、管理用户、执行命令等。
2. 文件传输:该工具支持文件传输功能,用户可以通过该功能将本地文件上传至Linux系统或从Linux系统下载文件至本地。
3. 命令执行:用户可通过该工具在远程Linux系统上执行命令,并获取命令执行结果。
4. 系统监控:该工具提供系统监控功能,用户可以查看CPU、内存、磁盘等系统资源的使用情况,并进行相关管理操作,如进程终止、资源释放等。
二、优势使用Python编写的Linux系统远程管理工具相比其他工具具有以下优势:1. 简单易用:工具的设计理念是简洁易懂,用户可以通过基本的命令行操作实现各项功能,无需在复杂的图形界面中学习和操作。
2. 跨平台支持:Python作为一种跨平台的编程语言,可以在多个操作系统上运行,因此该工具也可在不同的操作系统上使用,如Linux、Windows、Mac等。
3. 丰富的库支持:Python拥有庞大而丰富的库,用户可以利用这些库来增加工具的功能,满足特定需求。
4. 可扩展性强:使用Python编写的工具具有良好的可扩展性,用户可以根据自身需求进行二次开发,添加新功能或修改现有功能。
三、使用步骤下面介绍Linux系统远程管理工具的使用步骤:1. 安装Python:在Linux系统上安装Python编程语言的运行环境。
2. 安装依赖库:使用pip命令安装所需的依赖库,如paramiko、pycrypto等。
Linux系统远程连接管理的Python脚本

Linux系统远程连接管理的Python脚本Linux系统是一种开源的操作系统,其稳定性和可靠性被广泛认可。
为了更好地管理Linux系统的远程连接,我们可以编写一个Python脚本来简化操作、提高效率。
本文将介绍如何使用Python编写一个远程连接管理脚本,并展示其功能和使用方法。
一、概述远程连接管理脚本是基于Python的,可以通过提供的IP地址和用户名密码等信息来连接远程的Linux系统。
该脚本通过SSH协议与目标Linux系统建立连接,并且提供了一系列的功能,包括文件上传、文件下载、命令执行等。
下面将详细介绍脚本的使用方法及各项功能。
二、使用方法1. 环境配置在开始使用远程连接管理脚本之前,首先需要确保本地机器上已安装Python以及相关依赖库。
可以通过命令行检查Python版本和安装情况,如下所示:```$ python --versionPython 3.8.1$ pip --versionpip 20.0.2 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)```确保Python版本为3.x,并且pip已正确安装。
2. 脚本使用在脚本代码的开头部分,需要修改以下参数以适应不同的情况:```hostname = '192.168.0.1' # 远程主机IP地址username = 'admin' # 用户名password = 'password' # 密码```将上述参数更改为目标Linux服务器的IP地址、用户名和密码。
脚本使用方法如下:①文件上传:通过命令行执行以下命令,将本地文件上传到远程Linux系统。
```$ python remote_connection.py upload local_file remote_folder```其中,local_file为本地文件的路径,remote_folder为远程Linux系统中的目标文件夹路径。
基于SSH技术的Linux远程控制系统的设计与实现

就安 装 的程 序 口 且均 安装 S S H命 今行程 序客户 端 。本 系统通
过程 序集 的方式 创建 一个 S S H对象 实例 ,完成两 种操 作系统 间的远程交互及管理 。S S H交互过程如图 1 所 示。
} P U s ef Pas s W o ̄
控制 系统 客户端 ,通过 轮询 的方式定 时登 录设定 的待监控与管 理服务器 ,通过 S S HC o mm a n d启动服务器上查 看系统时 间、进 程 、磁盘空 间、文件 、C P U使用 率等参数状态 的脚本进行服务
摘 要 :针 对 L i n u x与 W i n d o ws 两 种 主 流 操 作 系统 间 信 息 交 互 的 需 求 ,设 计 实 现 了一 种 基 于 S S H技 术的 Wi n d o ws 平 台下 的 L i n u x远
程控制 系统。该 系统采用 c ≠ ≠ 语 言实现 ,通过在 L i n u x 服务 器端设 置公钥 文件 ,实现 了由c ≠ ≠ 封装编译的程序集和动 态 链接 库所创建 的S S H 实例 与 L i n u x 操 作 系统的连接 ,调 用 L i n u x 服务 器端 B a s h 脚本, 从 而 实现 两种操作 系统间的远程 交互 。此 系统具有较 强的 实
两种操作 系统间的远程交互及管理 ,更好地提 高了工作 效率 , 适应大多 e c u r e S h e l l 的缩 写 ,它 的 产生 是 为 了解 决 T e l n e t
长期 以来存在 的不 安全性问题 [ 1 】 。S S H可 以把所有传输 的数 据 进行加密 ,从 而有 效的防止 了窃取 、劫接和 网络攻击 ,增进 了 系统安全性 闭 。本 系统采用 了封装 的方式将 S S H的主要 使用 部 分封装在程序集 和动态链 接库 内,尽可能 的减少 了程序对 系统 资源 的占用 。
Linux环境下的Shell脚本实现远程命令执行

Linux环境下的Shell脚本实现远程命令执行在Linux操作系统中,Shell脚本是一种强大的工具,可以用于自动化执行一系列命令。
而其中的远程命令执行则可以在一台主机上运行命令,同时操作和控制另一台远程主机。
下面将介绍如何在Linux环境下使用Shell脚本实现远程命令执行。
一、准备工作在开始之前,需要确保以下条件已满足:1. 已经处于Linux环境下,并且具备Shell脚本编写和执行的基础知识;2. 已经配置好远程主机与本地主机之间的网络连接,并具备远程登录权限;3. 安装并配置了SSH服务,以便能够通过SSH协议连接远程主机;4. 拥有远程主机的IP地址或域名,并记录下来。
二、编写Shell脚本首先,在本地主机上创建一个新的Shell脚本文件,比如命名为"remote_execute.sh"。
然后,使用文本编辑器打开该文件,开始编写Shell脚本。
以下是一个示例的Shell脚本,用于实现在远程主机上执行命令并将结果输出到本地主机上:```bash#!/bin/bash# 远程主机的IP地址或域名REMOTE_HOST="your_remote_host"# 远程主机的用户名REMOTE_USER="your_remote_user"# 远程命令,将要在远程主机上执行的命令REMOTE_COMMAND="your_remote_command"# 在远程主机上执行命令,并将结果输出到本地主机上ssh "$REMOTE_USER@$REMOTE_HOST""$REMOTE_COMMAND"```在上述示例中,你需要将"your_remote_host"、"your_remote_user"和"your_remote_command"替换为你实际使用的远程主机IP地址或域名、远程主机用户名以及你希望在远程主机上执行的命令。
毕业设计(论文)-Linux下的简单网络管理控制系统的设计与开发设计与实现

Linux下的简单网络管理控制系统的设计与开发摘要随着网络的逐步普及,网络的管理和控制的重要性已经越来越突出,它关系着网络的进一步发展和普及,甚至关系着网络的生存。
为了促进网络的发展,在现有的技术条件下,可以开发出成熟的网络控制系统对网络进行管理和控制。
可以通过对网络的管理和控制为本地网络和外部网络之间建立一道屏障,从而控制和管理进出网络的数据。
网络管理控制系统的核心是制定一套完整的网络控制指令集和设计控制管理的功能模块。
本系统在Linux-2.4.20-8内核下完成网络管理控制系统的设计,使用控制管理命令实现对网络数据的管理。
控制和管理模块的设计使用了netfilter数据控制过滤机制来实现对网络的管理。
模块可以实现对固定端口,网页访问以及不同数据协议类型的数据进行管理和控制。
从实际应用中可以得出结论在Linux-2.4.20-8的内核下可以成功的使用netfilter网络数据控制机制过滤和管理进出系统的网络数据。
本文首先介绍网络管理控制系统的一些基本概念以及一些在Linux下的C语言编译环境,其次介绍Linux netfilter控制模块在内核中的实现,在此着重介绍了netfilter在IPv4中的结构以及在Linux 2.4.x 内核中实现,最后介绍了网络数据管理的策略、模块编程以及如何设计网络管理控制的功能模块。
在了解这些技术的基础之上,成功的在Linux-2.4.20-8内核下开发出一套简单的网络管理控制模块。
这些模块通过程序发出的控制指令进行动态的插入和卸载。
这些模块分别实现了对ICMP网络数据,HTTP站点,FTP服务器的管理控制。
关键词:内核模块;数据包;netfilterDesign and Development of Simple Internet Management and Controlling System under LinuxAbstractWith the permeation of Internet,the importance of Internet management and controlling becomes more prominent, It is related to the further development and permeation even the existence of Internet. To promote the development of Internet, it is possible to develop a mature Internet controlling system which can be managed and controlled under the current technical conditions. It can build a natural defense between internal and external network through managing and controlling the data of Internet. It is the core of this system that builds an overall Internet controlling agreement and realizes the model function of controlling and management. This system realizes the management and controlling of Internet data successfully by doing its design whose modules mainly based on the data controlling and filtering mechanism of Netfilter, under Linux. The modules have success in realizing the data managements. From practice, it concludes that data controlling mechanism of Netfilter can succeed in managing and filtering the whole data under Linux. This thesis introduces some basic concepts of MCS and edition environment of C language under Linux, firstly. Then it introduced realization of controlling module of Linux, Netfilter in Kernel, which highlight the structure of Netfilter in IPv4 and realization of Linux. Lastly it mentioned the strategy of MCS modules edition and how to design the function modules of MCS. So one simple modules of MCS of which doing dynamic insertion and suddenly unloading through controlling agreement sent by programs is designed successfully under Linux, following these skills. These modules also realize the management and controlling of ICMP data, HTTP websites and FTP Servers, respectively.Key words:Kernel Module;Packet;Netfilter目录论文总页数:29页1 引言 (1)1.1课题背景 (1)1.2国内外研究现状 (1)1.3课题意义 (1)1.4本课题研究方法 (1)2 Linux开发环境介绍 (2)2.1Linux简介 (2)2.2Linux下的C语言开发环境 (2)2.3常用的网络数据控制工具介绍 (3)3 Linux网络管理控制核心技术 (5)3.1SOCKET网络编程 (5)3.1.1 Linux网络编程 (5)3.1.2基本套接字函数 (5)3.2基于TCP协议的通讯 (7)3.2.1 TCP传输协议简介 (7)3.2.2控制字符的制定 (7)4 NETFILTER-网络控制模块设计基础 (8)4.1netfilter介绍 (8)4.2netfilter中的重要返回值 (8)4.3netfilter在IPv4中的框架 (9)4.4netfilter核心模块 (10)4.5netfilter可以实现的基本控制功能 (11)5 测试Linux网络管理系统的设计实现 (13)5.1系统设计整体框架 (13)5.2用SOCKET实现控制端和管理端的通讯 (14)5.2.1管理端的设计与实现 (15)5.2.2控制端的设计与实现 (16)5.3用netfilter设计控制功能模块 (18)5.3.1设计控制ICMP数据报的模块 (18)5.3.2用netflter设计管理控制FTP服务器的模块 (20)5.3.3设计控制HTTP网站访问的模块 (22)5.4用GCC编译生成模块..........................................................................错误!未定义书签。
Linux终端中的远程连接和远程管理指令

Linux终端中的远程连接和远程管理指令远程连接和远程管理是Linux终端中非常重要的功能之一。
通过远程连接,我们可以在不同的终端设备之间进行交互和操作,从而实现远程管理。
一、远程连接Linux系统提供了多种方式进行远程连接,最常用的是通过SSH (Secure Shell)协议进行连接。
SSH是一种安全的远程登录协议,可以在不安全的网络上提供安全的远程连接。
1. SSH客户端和服务器要进行SSH远程连接,首先需要在客户端和服务器上分别安装SSH客户端和SSH服务器。
在大多数Linux发行版中,SSH客户端通常已经默认安装,而SSH服务器需要单独安装。
2. 连接命令通过以下命令可以连接到SSH服务器:```$ ssh [用户名]@[服务器地址]```其中,[用户名]是服务器上的用户名,[服务器地址]是服务器的IP 地址或域名。
连接成功后,需要输入密码进行身份验证。
3. 公钥认证为了提高安全性和方便性,可以使用公钥认证代替密码认证。
首先,在本地生成公钥和私钥对,然后将公钥上传到服务器上。
通过公钥认证,可以在不输入密码的情况下登录服务器。
二、远程管理指令远程管理指令提供了在远程连接中进行管理操作的功能,以下是一些常用的远程管理指令:1. 文件传输通过SCP指令可以在本地和远程主机之间进行文件传输,语法如下:```$ scp [本地文件路径] [用户名]@[服务器地址]:[远程路径]```例如,将本地的文件test.txt传输到远程服务器的/home目录下:```$***********************.0.1:/home```2. 远程执行命令通过SSH指令可以在远程主机上执行命令,语法如下:```$ ssh [用户名]@[服务器地址] [命令]```例如,在远程服务器上创建一个新的目录:```$***************.0.1mkdirnew_directory```3. 远程启动和停止服务通过SSH指令可以在远程主机上启动和停止服务,语法如下:```$ ssh [用户名]@[服务器地址] systemctl [start/stop/restart] [服务名] ```例如,在远程服务器上重启Apache服务:```$***************.0.1systemctlrestartapache2```总结:通过远程连接和远程管理指令,我们可以轻松地在Linux终端中进行远程操作。
二 远程管理Linux服务器

TELNET服务配置文件 TELNET服务守候程序 TELNET终端工具
TELNET的配置
• 编辑/etc/xinetd.d/telnet
OPENSSH的简介
• OPENSSH的简介
OpenSSH 是 SSH(Secure SHell) 协 议 的 免费开源实现。它用安全、加密的网络 连接工具代替了telnet、ftp、rlogin、 rsh和rcp工具。该协议默认使用RSA钥匙
OpenSSH支持SSH协议的版本是3.9
OPENSSH的简介
OPENSSH配置
• RSA认证协议, RSA 密钥对的生成
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 64:c8:a8:fc:a8:ca:60:a3:cf:90:7a:61:9b:2e:f0:e7 rootgdlc-
• OPENSSH优点
加密方式传输 传输数据经过压缩,可加快传输速 可实现远程控制、数据传输(拷贝及FTP
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分类号:TP311.1 U D C:D10621-408-(2007)5913-0 密级:公开编号:2003032045成都信息工程学院学位论文一种远程管理Linux系统工具的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:一种远程管理Linux系统工具的设计与实现摘要现在,Linux已经是应用比较广泛的操作系统之一,在其系统中有很多的服务。
为了实现远程配置和管理Linux中的各种服务,需要有一种远程管理Linux 系统的工具软件,Webmin就是一种较好的B/S模式软件,而该课题以C/S模式实现。
该工具主要功能实现对Linux系统用户和组的添加、修改和删除;对系统应用服务(如:DNS、FTP、Apache、系统启动服务管理)进行管理和配置,这些服务的远程配置主要是通过修改服务配置文本文件来实现的。
该远程管理工具选用C/S模式设计,在客户端,采用GTK编程来实现操作界面;在服务器端,选用Linux系统的文件调用函数来读写配置文件中的数据;采用Sock TCP 编程来实现客户端和服务端之间的数据通信。
通过系统测试后,完成预期的目标,但是需要进一步完善程序和考虑安全性后,方可应用于实际的远程管理。
关键词:Linux;系统服务;C/C++;GTK;系统调用;SocketThe Design and Implementation of a Remote ManagementTool for LinuxAbstractThe operating system of Linux has become one of the most popular operating systems nowadays. It provides many kinds of service. In order to configure and manage the service remotely, the tool of remote management of the operating system of Linux is needed. Webmin is a good tool of software based on the model of B/S. This design is implemented based on the model of C/S. The main functions of the system include addition, modification, deletion of users and groups of Linux operating system and configuration and management of the service of application of the system, such as the DNS, FTP, Apache and the management of booting service. The remote management of service is implemented by modifying the files of configuration. The model of C/S is selected by this system. In the Client, the operating interface is made by the programming of GTK. In the Server, the functions of transferring of files of Linux operating system are used to write and read the data of the configuration files. The communication of Client and Server is implemented by the programming of Sock TCP. The testing demonstrates that the system has reached the prospective goal. But lots of improvements should be made and the problems of security should be considered more. After being modified and perfected, the system can be used to manage the system remotely.Key words: Linux;System Servers;C/C++;GTK;System Call;Socket目录论文总页数:33页1 引言 (1)1.1课题背景 (1)1.2国内外研究现状 (1)1.3本课题研究的意义 (1)1.4本课题的研究方法 (1)2 GTK编程 (1)2.1GTK简介 (1)2.2常用的GTK构件 (3)3 LINUX系统调用 (6)3.1L INUX系统文件 (6)3.2如何从文件中读取数据 (6)3.3进程和线程的使用 (7)4 基本的套接口编程 (7)4.1概述 (7)4.2简单的网络编程 (8)5 程序设计和流程图 (10)5.1设计思路 (10)5.2服务程序 (10)5.2.1流程设计 (10)5.2.2功能模块 (11)5.3客户程序 (20)5.3.1设计思路 (20)5.3.2程序设计 (20)6 系统测试 (30)结论 (31)参考文献 (31)致谢 (32)声明 (33)1引言1.1课题背景Linux是目前应用最广泛的操作系统之一,基于Linux系统的网络服务软件(如FTP、Apache、DNS、SendMail)的功能也很强大。
但是现在能够统一对这些服务进行管理的软件却很少的。
本课题为减轻系统管理员的工作量而提供了一些简单的系统服务的管理和查看工具。
1.2国内外研究现状Linux是现在开源项目的代表,很多大的硬件厂商也在支持Linux的发展。
而且Linux平台上的服务软件也是越来越多了。
现在Linux已经进入到企业级应用,Webmin是一种基于B/S模式的远程管理Linux系统的软件工具。
1.3本课题研究的意义本课题是为了给系统管理员提供一种远程管理Linux中某些主要服务的工具软件,完成服务配置管理和查看一些重要的数据。
由于Linux是开源项目的代表,对Linux的学习有助于对计算机系统和软件理论知识的提高。
通过该课题的设计和实现,既解决远程管理Linux系统,又让自己掌握了一些Linux系统编程和Sock编程能力。
1.4本课题的研究方法本课题主要是对网络配置、GTK库、Linux系统调用和网络编程方面的研究。
采用C/S模式,在客户端采用GTK函数实现用户界面的编写,在服务器端通过Linux的系统调用,来实现本地服务配置,然后再通过Sock编程来实现服务器和客户端的通信,传递配置内容和服务指令。
2GTK编程2.1GTK简介GTK(GIMP Toolkit,GIMP工具包)是一个用于创造图形用户接口的多平台工具。
它包含有基本的空间和一些很复杂的控件:例如文件选择控件。
GTK最初是GIMP(GNU图形处理程序)开发的控件集合,然后它不断扩展,直到今天被用于大量的应用程序当中。
从根本上来说,主循环是由glib实现的。
Gtk将glib主循环连接到Gdk 的X服务器,并提供一个方便的接口。
Gtk分别用gtk_main()函数和gtk_main_quit()函数来运行主循环和退出主循环,当系统调用了gtk_main()函数后,由于gtk_main()函数可以递归调用,所以需要调用gtk_main_quit()函数才能退出gtk。
gtk_main()函数的所有功能都是监视Gtk程序和与X服务的连接,对同样的时间队列起作用。
gtk_main()函数用于阻塞该进程直到满足某些条件。
所有的Gtk程序都用这个技巧使应用程序正在运行时main()函数被阻塞,直到用户通过点击鼠标或键盘来产生一个信号,并通过该信号来调用相应的回调函数。
GTK是一个时间驱动工具包,它将在gtk_main()函数中一直等待,直到某个事件的发生或控制权被交给相应的函数。
(1)信号控制权的传递是使用“信号”的方法。
一旦事件发生,比如鼠标器按钮被按下,被按下的构件(按钮)将引发适当的信号。
有一些信号是大多数构件都具备的,比如destory,还有一些是某些构件专有的,比如在按扭的toggled 信号。
要让一个按钮执行一个操作,我们需要写一段信号处理程序,以捕获它的信号,然后调用相应的回调函数。
这由类似以下所示的函数实现:Gint gtk_signal_connect(GtkObject *object,Gchar *name,GtkSignalFunc func,gpointer func_data );上面函数的第3个参数为回调函数,它的形式通常是:void callback_func( GtkWidget *widget, gpointer callback_data );(2)事件除了上面的信号机制外,还有一些和X事件机制相对应的事件。
回调函数也可以和这些事件连接起来应用。
将回调函数连接到X的某一个事件,需要使用gtk_signal_connect函数,并使用事件名称作为命名参数。
事件的回调函数与信号的回调函数在形式上略有不同:Void func(GtkWidget *widget,GdkEvent *event,gpointer callback_data );GdkEvent是C中的联合体结构,其类型依赖于发生的事件。
要想知道哪一个事件已经引发,可以查看类型参数,因为每个可能的可选事件都有一个反映引发事件的类型参数。
将回调函数与一个事件连接起来,需要使用以下形式的函数:gtk_signal_connect( GTK_OBJECT(button),"button_press_event"GTK_SIGNAL_FUNC(button_press_callback),NULL) ;这里假定button是一个按钮构件。
现在,当鼠标移动到按钮上方,鼠标按钮按下时,将调用button_press_callback函数。
回调函数可以作如下声明:static gintbutton_press_callback( GtkWidget *widget,GdkEventButton *event,gpointer data);2.2常用的GTK构件GTK构件可以分为两种。