1、第四次实验软 件 学 院信息安全产品开发实践实验四报告陈枝-10431110342012-09-30四 川 大 学 计 算 机 学 院、软 件 学 院实 验 报 告 学号:_1043111034_ 姓名:陈枝 专业:软件工程 班级:3班 第 四 周 课程名称 信息安全产品开发实践实验课时1实验项目远程控制系统实验时间第四周2012年9月27日星期五2012年9月30日星期天实验目的 熟悉: 流套接字与数据报套接字回顾 远程控制系统流程实验环境 X86,WindowsXP,VMware5.0,RedHat Linux 9.0实验内容(算法、程序、步骤和方法) 利用流套接字实现一个简单的远程控制系
2、统:1.客户端输入“quit”,客户端程序与服务器端程序打印退出信息,终止程序的执行;2.客户输入命令,客户端将命令通过流套接字发送给客户端,服务器执行收到的命令,并将结果发送到客户端显示;3.如果没有客户输入的命令,服务器发送命令非法信息,并在客户端显示该条信息。编写实验报告:1.列出程序运行状态、截图、配文字说明;2.独立完成,打印报告,报告语言为中文,不少于4页A4,封面上书写姓名、学号。数据记录和计算 TCP套接字编程(cont.): 工作原理: 客户端接收用户输入的命令,客户端通过套接字将命令传送给服务器端, 服务器在收到用户的命令,对命令进行解析 在服务器端调用对应的命令 并将命令
3、执行的结果发送给客户端,从而实现远距离控制的功能。程序源码:tcpclient.c#include #include #include #include #include #include #define PORT 8900#define BUFSIZE 2048void printusage(char*command) if (NULL=command) exit(-1); fprintf(stderr,the useage of %s :,command); fprintf(stderr,%s IPADDRn,command); return;int main(int argc,char*
4、 argv) int sockfd; int length; struct sockaddr_in server; int sndnum; int recvnum; char sendbufBUFSIZE; char recvbufBUFSIZE; sockfd=-1; length=0; if (2!=argc) printusage(argv0); return -1; if (-1=(sockfd=socket(AF_INET,SOCK_STREAM,0) perror(create socket errorn); return -1; memset(&server,0,sizeof(s
5、erver); server.sin_family=AF_INET; server.sin_addr.s_addr = inet_addr(argv1); server.sin_port = htons(PORT); if (-1=connect(sockfd,(struct sockaddr*)&server,sizeof(server) perror(connect errorn); close(sockfd); return -1; while(1) fprintf(stderr,TCP); memset(recvbuf,0,BUFSIZE); memset(sendbuf,0,BUFS
6、IZE); fgets(sendbuf,BUFSIZE,stdin); length=strlen(sendbuf); sendbuflength-1=0; if (0=(sndnum=write(sockfd,sendbuf,strlen(sendbuf) perror(send errorn); close(sockfd); exit(-1); if (0=strcmp(sendbuf,quit) fprintf(stderr,quit.n); close(sockfd); exit(0); if (0=(recvnum=read(sockfd,recvbuf,BUFSIZE) perro
7、r(read errorn); close(sockfd); exit(-1); recvbufrecvnum=0; fprintf(stderr,the result:n); fprintf(stderr,%sn,recvbuf); tcpserver.c#include #include #include #include #include #include #define PORT 8900#define BUFSIZE 2048int execute(char*command,char*buf) FILE *fp; int count; char commandbuf2056; if
8、(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); return -1; while (count=(recv
9、num=read(conn_sock,recvbuf,BUFSIZE) perror(the commucation errorn); close(conn_sock); close(sockfd); return -1; recvbufrecvnum=0; fprintf(stderr,the command is:%sn,recvbuf); if (0=strcmp(recvbuf,quit) fprintf(stderr,the client is quitn); close(conn_sock); break; if (1=(cnt=execute(recvbuf,sendbuf) s
10、printf(sendbuf,the invalid command,please try againn); fprintf(stderr,the result is n%s,sendbuf); if (0=(sendnum=write(conn_sock,sendbuf,strlen(sendbuf) perror(the commucation errorn); close(sockfd); close(conn_sock); return -1; close(sockfd);Makefile:结 论(结 果) 结果截图:服务器端:客户端:小 结 通过本实验,我掌握了:利用流套接字实现一个简单的远程控制系统,熟悉了流套接字与数据报套接字编程。自己能做一个简单的远程控制系统流程。指导老师评 议 成绩评定: 指导教师签名:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1