2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试

时间:2022-10-30 19:57:49

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试

课上测试补交

第八周测试-1:

参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成“求命令行传入整数参数的和”

测试代码传入自己的8位学号

上方提交代码

附件提交运行测试截图

解决方案:

命令行的参数通过*argv[]传进来。

代码如下:

#include <stdio.h>
 int main(int argc,char *argv[]){
           int sum=0,i=0;
           for(i=1;i<argc;i++){
                   sum+=atoi(argv[i]);
           }
           printf("%d\n",sum);
   }

运行截图:

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试


第八周测试-2:

把第一个练习中的代码在X86-64(Ubuntu)中反汇编,给出汇编代码和机器码的截图

把X86-64汇编翻译成Y86-64汇编,并给出相应机器码的截图(使用附件中的Y86-64模拟器)

解决方案:

gcc -E main.c -o main.i 预处理
gcc -S main.i -o main.s 转换成汇编代码

使用以上两个命令将我的第一个测试的代码转换成x86-64汇编代码。
代码截图:

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试

测试要求自己将x86-64翻译成y86-64代码,但是我实在不会,书自己看不懂,网上也没有相关知识点,问同学也没有会的,所以就没有做,但是没有自暴自弃也没有怨天尤人把自己会的都做了。

然后根据老师给的y86-64编译器的教程安装。

然后使用压缩包里已经有的Makefile将asum.ys转换成asum.yo。

使用命令cat asum.yo来查看机械码。机械码截图:

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试


第八周测试-3

基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端
服务器响应消息格式是

客户端IP:XXXX
服务器实现者学号:XXXXXXXX
当前时间: XX:XX:XX

上方提交代码
提交一个客户端至少查询三次时间的截图测试截图
提交至少两个客户端查询时间的截图测试截图

解决方案:

csapp.hcsapp.c文件录入虚拟机中。

再基于socket编写服务器端代码echoserveri.c和客户端代码echoclient.c

然后使用命令gcc -o xxx xxx.c编译两个代码。

接着分别用两个终端打开服务器端和客户端两个可执行文件。

然后就会显示客户端与服务器端成功连接。
运行截图:

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试

最后在客户端输入一串信息,然后服务器端会显示收到多少字节的信息。
运行截图:

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试

测试中出现的问题与解决方案

问题1:

在编译客户端和服务器端代码的时候一直显示编译不成功,但是代码确实没有问题。

解决方案1:

原来使用的是gcc -o xxx xxx.c命令编译客户端和服务器端就会出现编译不成功的问题,但是在命令后面添加-lpthread这个参数以后就可以编译成功了。

错误截图:

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试

正确截图:

2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试