文件大小:1.83MB 适用专业:程序设计 适用年级:大学 论文编号:208848 论文简介:
毕业设计-基于Linux的Telnet客户端软件(远程控制)设计与实现,共39页,14669字,附完整c语言程序和相关文档
摘要
本系统通过设计一个基于Linux环境的Telnet客户端软件来实现。Telnet协议(Telecommunication network protocol,电信网络协议)是TCP/IP协议族中的一员,工作在应用层,提供了远程登录的功能。所设计的软件的用户界面为Linux环境下的命令行,能够实现基于Linux环境的远程控制,例如,在本地运行服务器端的命令,查看和配置远程系统等;能通过选项协商,使Telnet工作在最佳模式下;能实现远程登录到Linux、Windows等操作系统上。本Telnet客户端主要通过三个有限状态机(Finite state machine,简称FSM)实现Telnet过程,分别为主有限状态机,套接字输出有限状态机,子选项协商有限状态机。该Telnet客户端支持回显方式、二进制发送和操作方式等的选项协商 ,并且支持对终端类型的子选项协商。本系统可用于远程教学和远程维护中。
关键词: Linux;远程登录;远程控制;Telnet;有限状态机
目次
摘要 I
Abstract II
1 绪论 1
1.1 Telnet简介 1
1.2 实现本设计的意义 1
2 问题分析 2
2.1 Telnet协议详解 2
2.1.1 Telnet客户和服务器的典型连接图 2
2.1.2 NVT 3
2.1.3 Telnet命令 3
2.1.4 选项协商 4
2.1.5 子选项协商 6
2.1.6 Telnet的操作方式 6
2.1.7 同步信号 7
2.1.8 客户的转义符 7
2.2 Linux中的终端I/O 7
2.2.1 Linux中的终端I/O介绍 8
2.2.2 控制设备驱动器 9
3 系统总体设计 10
3.1 技术方案 10
3.2 设计考虑 10
3.3 模块划分 10
3.4 系统结构 11
4 数据结构描述 13
4.1 有限状态机 13
4.1.1有限状态机的规约 13
4.1.2 有限状态机的实现 13
4.1.3 压缩的有限状态机表示 14
4.1.4 在运行时压缩的有限状态机的表示 15
4.2 针对来自服务器数据的主有限状态机 15
4.3 套接字输出有限状态机 17
4.4 选项子协商有限状态机 18
5 算法描述及实现 20
5.1 Telnet客户端程序主函数 20
5.2 Telnet客户端程序核心 20
5.3 设置终端 20
5.4 恢复终端设置 21
5.5 主有限状态机的实现 21
5.6 套接字输出有限状态机的实现 21
5.7 子选项协商有限状态机的实现 22
5.8 打印从套接字接收到的单个字符 22
5.9 向服务器发送数据时NVT的实现 22
6 运行及测试 23
6.1 登录到其他Linux系统 23
6.2 登录远程的xp系统 25
6.3 运行无任何协商的服务器端,并登录 26
7 结论 27
致谢 28
参考文献 29
附录 30
附录1 Telnet客户端主程序 30
附录2 Telnet客户端程序核心代码 31
技术方案
1) 在PC机上使用VMware虚拟机建立两个Linux系统和一个xp系统,并组成一个局域网。
2) 使用C语言,调用Linux的系统函数实现Telnet客户端程序。
3) 用设计的Telnet客户端运行在一个Linux系统上,并和另一个Linux系统以及xp系统上的Telnet服务器端进行通信,控制服务器端系统。
4)在Linux环境下实现一个简单的Telnet服务器端程序,测试未进行选项协商时Telnet的工作状态与效果。
设计考虑
1) 在Linux系统环境下实现Telnet客户端程序。
2) 键盘输入的数据和TCP接收到的数据同步处理。
3) 基于NVT (网络虚拟终端)实现Telnet协议。
4) 处理Telnet的选项协商问题。
表3-1文件结构
文件名 目录 简介
main.c mytelnet/ telnet客户端的主函数,管理人机界面
telnet.h mytelnet/ telnet客户端用到的命令的宏定义
connect.h mytelnet/ 提供进行telnet连接的接口
fsm_fuild.h mytelnet/ 提供建立并初始化三个有限状态机的接口
fsm_struct.h mytelnet/ 定义描述三个有限状态机的压缩转移矩阵的符号
common_fsm.h mytelnet/ 提供有限状态机共用函数库的接口
main_fsm.h mytelnet/ 提供主有限状态机函数库的接口
key_fsm.h mytelnet/ 提供套接字输出有限状态机函数库的接口
sub_fsm.h mytelnet/ 提供子选项协商有限状态机函数库的接口
connect.c mytelnet/ telnet连接的具体实现,通过调用TCP套接字实现连接
fsm_fuild.c mytelnet/ 建立并初始化三个有限状态机
fsm_struct.c mytelnet/ 初始化描述三个有限状态机的压缩转移矩阵
common_fsm.c mytelnet/ 有限状态机共用函数库
main_fsm.c mytelnet/ 主有限状态机函数库
key_fsm.c mytelnet/ 套接字输出有限状态机函数库
sub_fsm.c mytelnet/ 子选项协商有限状态机函数库
说明:
该客户端程序使用了自上而下的设计方法,把整个程序分成几个模块。最顶层的模块是main.c文件,其他的所有模块都被该顶层模块直接或间接地调用。telnet.h中包含了其他所有文件都会用到的命令的宏定义,声明远程服务器地址和终端参数结构体的全局变量。
其他的各个c文件都对应一个同名头文件,c文件有变量的定义及函数的实现,头文件用于与其他模块的交互。系统包含控制Telnet连接的模块connet.c和管理三个有限状态机的模块fsm_build.c。系统的主要部分是管理有限状态机的模块,该模块包括通用函数库common_fsm.c、用压缩的转移矩阵描述三个有限状态机的fsm_struct.c、各个有限状态机的函数库。
当需要添加更多的Telnet选项时,只要在对应的有限状态机函数库中添加函数,并修改fsm_struct.c中压缩转移矩阵即可。
论文文件预览: 共6文件夹,75个文件,文件总大小:1.83MB,压缩后大小:1.08MB
- 毕业设计-基于Linux的Telnet客户端软件(远程控制)设计与实现
- 代码
- 参考工程
- telnet
- .do_echo.c.swp [4.00KB]
- cerrexit.c [520.00B]
- connectsock.c [2.29KB]
- connectTCP.c [585.00B]
- connectUDP.c [584.00B]
- dcon.c [418.00B]
- do_echo.c [1.36KB]
- do_noga.c [624.00B]
- do_notsup.c [480.00B]
- do_txbinary.c [726.00B]
- errexit.c [426.00B]
- fsmbuild.c [740.00B]
- fsminit.c [985.00B]
- local.h [409.00B]
- Makefile [1.63KB]
- recopt.c [631.00B]
- scrgetc.c [701.00B]
- scrinit.c [1.22KB]
- scrwrap.c [815.00B]
- sofsm.c [1.33KB]
- sonotsup.c [553.00B]
- soputc.c [979.00B]
- sowrite.c [703.00B]
- status.c [1.20KB]
- subend.c [398.00B]
- subfsm.c [688.00B]
- subopt.c [599.00B]
- subtermtype.c [652.00B]
- suspend.c [916.00B]
- sync.c [676.00B]
- tclient.c [697.00B]
- tcout.c [740.00B]
- telnet.c [2.12KB]
- telnet.h [2.19KB]
- tnabort.c [380.00B]
- tnfsm.h [1.25KB]
- ttfsm.c [1.75KB]
- ttputc.c [1.41KB]
- ttwrite.c [662.00B]
- ttysetup.c [1005.00B]
- unscript.c [622.00B]
- will_notsup.c [459.00B]
- will_termtype.c [1.13KB]
- will_txbinary.c [726.00B]
- xput.c [651.00B]
- readme.txt [112.00B]
- mytelnet
- common_fsm.c [5.85KB]
- common_fsm.h [4.68KB]
- connect.c [3.02KB]
- connect.h [582.00B]
- fsm_build.c [2.22KB]
- fsm_build.h [764.00B]
- fsm_struct.c [3.79KB]
- fsm_struct.h [2.88KB]
- key_fsm.c [6.03KB]
- key_fsm.h [2.22KB]
- main.c [6.39KB]
- main_fsm.c [11.50KB]
- main_fsm.h [5.96KB]
- Makefile [646.00B]
- sub_fsm.c [920.00B]
- sub_fsm.h [730.00B]
- telnet.h [2.70KB]
- server_telnet
- makefile [630.00B]
- server_telnet [90.48KB]
- telnet-server.c [7.19KB]
- telnet-server.c~ [7.16KB]
- telnet-server.o [87.71KB]
- telserver [90.48KB]
- Readme.txt [807.00B]
- 测试分析报告.doc [54.00KB]
- 用户使用手册.doc [44.50KB]
- 论文.doc [1.06MB]
- 设计说明书.doc [250.50KB]
- 需求规格说明书.doc [55.00KB]
|