1、远程控制系统四 川 大 学 计 算 机 学 院、软 件 学 院实 验 报 告 课程名称 信息安全产品开发实践 实验课时5实验项目远程控制系统实验时间2011年9月22号实验目的 1)继续了解Linux下C语言程序开发的过程2)继续了解Socket网络编程3)回顾流套接字与数据报套接字4)了解远程控制系统的流程及其实现的两种方式(TCP和UDP) 实验环境 VMware5.0,RedHat Linux 9.0实验内容(算法、程序、步骤和方法) 利用数据报套接字实现一个简单的远程控制系统:1.客户端输入“quit,客户端程序与服务器端程序打印退出信息,终止程序的执行;2。客户输入命令,客户端将命令
2、通过流套接字发送给客户端,服务器执行收到的命令,并将结果发送到客户端显示;3.如果没有客户输入的命令,服务器发送命令非法信息,并在客户端显示该条信息。4。编写实验报告:列出程序运行状态、截图、配文字说明;在进行试验之前先来回顾一下UDP套接字编程的流程:上图反应了在进行数据报套接字编程时服务器端和客户端需要做得工作,从中我们可以看出服务器端需要经过五个步骤,而客户端只需要四个步骤。远程控制的原理如下:客户端接收用户输入的命令,客户端通过套接字将命令传送给服务器端,服务器在收到用户的命令,对命令进行解析在服务器端调用对应的命令并将命令执行的结果发送给客户端,从而实现远距离控制的功能。从远程控制的
3、原理并结合UDP套接字编程的流程我们可以画出用UDP实现远程控制的流程图,如下:下面介绍本试验的具体步骤:(1):打开虚拟机,在Linux下的VI编辑器中编写服务器端程序UDPserver.c(2)使用命令gcc o UDPserver UDPserver。c g编译; (接上)实验内容(算法、程序、步骤和方法)(3):编写客户端程序:UDPclient.c (4): 使用gcc o UDPclient UDPclient。c g命令编译(5)使用setup命令配置虚拟机的IP地址为10.0.0。222(6):执行服务器端代码(。/UDPserver),客户端连接服务器(./UDPclient
4、 10.0。0。22):(6):客户端输入字符串ls,服务器端解析输出结果:(7):客户端继续输入字符串who,how,服务器端解析输出结果(8):客户端输入quit命令,断开连接,服务器正确反应,与客户端脱离连接附试验源代码:UDPserver。cinclude stdio。hinclude include include sys/socket。hinclude netinet/in。h#include define PORT 8900#define BUFSIZE 2048int execute(char*command,char*buf) FILE *fp; int count; cha
5、r commandbuf2056; if (NULL=command)|(NULL=buf) perror(command or buf is emptyn); return 1; count =0; memset(commandbuf,0,2056); strcat(commandbuf,”sh c ”); strcat(commandbuf,command); fprintf(stderr,the command is %sn”,commandbuf); if (NULL=(fp=popen(commandbuf,”r) perror(”create pipe errorn”); retu
6、rn 1; while ((count=sendto(sockfd,sendbuf,sendnum,0,(struct sockaddr)&client,lens) perror(the commucation errorn”); close(sockfd); return 1; close(sockfd);UDPclient.c#include stdio。h#include stdlib。hinclude include sys/types。hinclude sys/socket。hinclude netinet/in.h#include define PORT 8900define BU
7、FSIZE 2048void printusage(charcommand) if (NULL=command) exit(1); fprintf(stderr,the useage of s :,command); fprintf(stderr,”s IPADDRn,command); return;int main(int argc,char* argv) int sockfd; int length; struct sockaddr_in server; int sndnum; int recvnum; char sendbufBUFSIZE; char recvbufBUFSIZE;
8、sockfd=1; length=0; if (2!=argc) printusage(argv0); return -1; if (-1=(sockfd=socket(AF_INET,SOCK_DGRAM,0)) perror(create socket errorn); return 1; memset(server,0,sizeof(struct sockaddr); server.sin_family=AF_INET; server.sin_addr.s_addr = inet_addr(argv1); server.sin_port = htons(PORT); while(1) f
9、printf(stderr,”UDP”); memset(recvbuf,0,BUFSIZE); memset(sendbuf,0,BUFSIZE); fgets(sendbuf,BUFSIZE,stdin); length=strlen(sendbuf); sendbuflength-1=0; sndnum=strlen(sendbuf); if (0sendto(sockfd,sendbuf,sndnum,0,(struct sockaddr)&server,sizeof(struct sockaddr)) perror(send errorn); close(sockfd); exit(
10、1); if (0=strcmp(sendbuf,quit) fprintf(stderr,”quit。.。n”); close(sockfd); exit(0); if (0=(recvnum=recvfrom(sockfd,recvbuf,BUFSIZE,0,(struct sockaddr *)server,length)) perror(read errorn”); close(sockfd); exit(-1); recvbufrecvnum=0; fprintf(stderr,the result:n); fprintf(stderr,”sn,recvbuf); 数据记录和计算 详
11、细见上面结 论(结 果) 使用套接字能实现远程控制,且有TCP和UDP两种形式.小 结 通过本实验,我掌握了:1)进一步熟悉了Linux下C语言程序开发的过程;2)进一步了解Socket网络编程,巩固了对UDP和TCP编程;3)了解了远程控制的原理;4)学会了使用数据报套接字来实现远程控制;目前我存在的问题有:套接字的函数比较繁琐,掌握的不是很熟练。指导老师评 议 成绩评定: 指导教师签名:实验报告说明 专业实验中心 实验名称 要用最简练的语言反映实验的内容。如验证某程序、定律、算法,可写成“验证;分析。实验目的 目的要明确,要抓住重点,可以从理论和实践两个方面考虑。在理论上,验证定理、公式、
12、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法.一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。实验环境 实验用的软硬件环境(配置).实验内容(算法、程序、步骤和方法) 这是实验报告极其重要的内容.这部分要写明依据何种原理、定律算法、或操作方法进行实验,要写明经过哪几个步骤.还应该画出流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。数据记录和计算 指从实验中测出的数据以及计算结果.结论(结果) 即根据实验过程中所见到的现象和测得的数据,作出结论。小结 对本次实验的体会、思考和建议。备注或说明 可写上实验成功或失败的原因,实验后的心得体会、建议等。 注意:实验报告将记入实验成绩; 每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1