2017-2018-1 20155313 《信息安全系统设计基础》第八周课堂测试
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);
}
运行截图:
第八周测试-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汇编代码。
代码截图:
测试要求自己将x86-64翻译成y86-64代码,但是我实在不会,书自己看不懂,网上也没有相关知识点,问同学也没有会的,所以就没有做,但是没有自暴自弃也没有怨天尤人把自己会的都做了。
然后根据老师给的y86-64编译器的教程安装。
然后使用压缩包里已经有的Makefile将asum.ys转换成asum.yo。
使用命令cat asum.yo
来查看机械码。机械码截图:
第八周测试-3
基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端
服务器响应消息格式是
“
客户端IP:XXXX
服务器实现者学号:XXXXXXXX
当前时间: XX:XX:XX
”
上方提交代码
提交一个客户端至少查询三次时间的截图测试截图
提交至少两个客户端查询时间的截图测试截图
解决方案:
将csapp.h
和csapp.c
文件录入虚拟机中。
再基于socket编写服务器端代码echoserveri.c
和客户端代码echoclient.c
。
然后使用命令gcc -o xxx xxx.c
编译两个代码。
接着分别用两个终端打开服务器端和客户端两个可执行文件。
然后就会显示客户端与服务器端成功连接。
运行截图:
最后在客户端输入一串信息,然后服务器端会显示收到多少字节的信息。
运行截图:
测试中出现的问题与解决方案
问题1:
在编译客户端和服务器端代码的时候一直显示编译不成功,但是代码确实没有问题。
解决方案1:
原来使用的是gcc -o xxx xxx.c
命令编译客户端和服务器端就会出现编译不成功的问题,但是在命令后面添加-lpthread
这个参数以后就可以编译成功了。
错误截图:
正确截图: