1、第 7 章,远程终端管理系统,需求描述,远程终端管理系统实现了一个mini telnet的功能。该系统采用C/S架构,需要分别编写服务端与客户端程序。 其中,服务端采用I/O复用机制,实现多客户端连接。通过读取配置文件,服务端将初始化服务端的设置和建立用户信息。在客户认证登陆后,服务端动态维护实时用户的会话信息,接收客户端的命令,将执行结果返回给客户端并显示。,项目实施和课程安排,效果显示(1),启动服务端查看服务器,效果显示(2),启动客户端输入命令返回结果,效果显示(3),发送SIGUSR1信号之前,查看服务器进程发送SIGUSR1发送SIGUSR1信号之后,查看服务器进程,效果显示(4)
2、,发送SIGUSR2信号之前,查看服务器进程发送SIGUSR2发送SIGUSR2信号之后,查看服务器进程,项目分组,学员独立完成,1阶段任务,跟踪调试 加入4级日志函数 log_info(format.); log_warning(format.); log_error(format.); log_fatal_error(format.); 调试跟踪函数 debug(format.); trace();,2阶段任务,Sock编程 基于tcp协议的客户端服务端通讯。 服务端使用select I/O复用机制,支持多客户端连接。 客户端从终端接受命令,把命令发送给服务端。服务端执行命令,并把执行结果
3、返回给客户端。例如:在客户端终端键入“ls”,服务端将执行结果显示在客户端。 服务端使用链表记录当前客户端的会话连接,并动态维护会话。基本信息:客户端的ip地址、端口、服务端使用sock描述符、客户端连接时间、收发数据包的个数、数据包出现错误的个数、接收客户端的命令条数。,3阶段任务,守护进程 守护进程中重定向标准输入、输出、错误输出的文件描述符到指定文件。 守护进程负责服务进程的启动与关闭。 当收到停止服务信号时,守护进程杀掉服务进程,并且以后不再重新启动。 当收到开启服务信号时,守护进程启动服务进程。如果已经启动,则重新启动。 故增加两个信号的处理:开启服务器和停止服务器,信号值分别为SI
4、GUSR1.SIGUSR2。 守护进程采用定时器方式监控服务进程。定时查看服务进程(/proc/pid/status)的状态,并作出相应的处理。另外,如果服务异常退出,则重新启动。,4阶段任务,配置文件 服务端的配置从配置文件中获取,不再以启动参数的形式传入。 配置内容:服务端的使用的ip地址和端口最大的客户连接数用户名和用户密码日志文件保存的路径日志的输出级别,5阶段任务,用户认证 服务端和用户端增加用户密码登陆机制 在服务端配置文件中对客户端用户密码进行配置,服务启动后从配置文件中读取用户信息形成数据表。 在建立连接时,客户端把接受的用户名密码发送至服务端,服务验证后返回认证结果给客户端。
5、认证正确开始接受命令,认证错误重新认证。,6阶段任务,心跳机制 客户端与服务端之间使用心跳机制。心跳机制:客户端定时向服务端发送一个数据包(心跳包),证明自己活着。服务端超过一定的时间没有收到服务端的心跳包则说明客户端出现问题,做出相应的处理(一般处理记录状况,并且断开连接)。协议格式。 TLV 简单格式。1. 链表, 保存client信息, 包含每个client的定时器。select超时时间, 更新一下链表里面的定时器。accept之后, 更新。2. 线程, 线程里面去维护一个定时器数组。,7阶段任务,协议 根据通信数据的类型,重新设计应用协议。将上述客户端与服务端之间的通信数据,以协议的形式进行封装。,8阶段任务,服务端处理机制 改用多进程处理客户端的命令。 改用多线程处理客户端的命令。,毕业答辩,使用统一答辩模板 阶段项目总结,