2019-2020-1 20175227张雪莹《信息安全系统设计基础》实验三 《并发程序》
2019-2020-1 20175227张雪莹《信息安全系统设计基础》
实验三 《并发程序》
实验报告封面
- 课程:信息安全系统设计基础 班级:1752班 姓名:张雪莹 学号:20175227
- 指导教师:娄嘉鹏 实验日期:2019年11月18日
- 实验时间:--- 实验序号:三
- 实验题目:并发程序
实验步骤
- 任务一
- 要求:
- 学习使用Linux命令wc(1)
- 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
- 客户端传一个文本文件给服务器
- 服务器返加文本文件中的单词数
- 上方提交代码
- 附件提交测试截图,至少要测试附件中的两个文件
- wc命令
- 要求:
- 功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
- 格式:
wc [选项] 文件
- 参数:
-c
:统计字节数-l
:统计行数-m
:统计字符数-w
:统计字数-L
:打印最长行的长度-help
:显示帮助信息
- 实现
- 运行示例
- 任务二
-
思考题:对比单线程的版本的性能,并分析原因——
- 答:单线程比较稳定易于实现,运行稳定。而多线程由于创建和切换的开销,采用多线程可能不会提高程序的执行速度,反而会降低速度,但是对于频繁IO操作的程序,多线程可以有效的并发。
-
任务三
- 要求:
- 交叉编译多线程版本服务器并部署到实验箱中
- PC机作客户端测试wc服务器
- 提交测试截图
- 实现:
- 按照实验一的环境配置将PC连接到实验箱,要求是两个虚拟机和实验箱能互相ping通。
- 要求:
- 在ubuntu终端中输入
/usr/local/toolchain/toolchain-4.3.2/bin/arm-none-linux-gnueabi-gcc server.c -o armserver
/usr/local/toolchain/toolchain-4.3.2/bin/arm-none-linux-gnueabi-gcc client.c -o armclient
进行交叉编译
遇到的问题及解决方法
-
问题1:无法在超级终端中运行server.c和client.c
-
问题1解决方法:怀疑是实验箱的硬件问题,更换两台实验箱后仍然无法解决该问题,建议学校可以对这批设备进行检修。