2019-2020-1 20175221 20175225 20175226 实验三 实时系统

2019-2020-1 20175221 20175225 20175226 实验三 实时系统

实验要求

任务一

  • 学习使用Linux命令wc(1)
  • 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
  • 客户端传一个文本文件给服务器
  • 服务器返加文本文件中的单词数
  • 上方提交代码
  • 附件提交测试截图,至少要测试附件中的两个文件

任务二

  • 使用多线程实现wc服务器并使用同步互斥机制保证计数正确
  • 上方提交代码
  • 下方提交测试
  • 对比单线程版本的性能,并分析原因

实验步骤

任务一

  • 先使用man wc了解wc命令的功能与用法
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 在了解了各参数的作用后,对 test1.txt 和 test2.txt 分别试验 wc wc -w功能
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 根据wc的说明,-w对应单词统计数,其中字的定义是“空白、跳格或换行字符分隔的字符串”,而非单词数。譬如test3.txt中我输入了14个单词,使用-w参数只返回了13
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 故我设计两种统计统计单词的程序,主要区别是统计每个单词的标准不同
  • wc -w:' ','\n','\t','\r'作为分隔符
  • 单词统计:' ','\n','\t','\r','!','"','?','.',',','(',')',':',';','-'。
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 用socket编程实现
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统

任务二

  • 先用man命令了解线程的创建
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 得知在多线程编译的过程中需要加上 -lpthread,因为pthread库不是Linux系统默认的库,连接时需要使用静态库libpthread.a,所以在线程函数在编译时,需要使用“-lpthread”链接库函数。
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 用socket编程实现多线程
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 多个客户端一起传文件给服务器
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统

实验中的问题及解决过程

  • 问题1:
  • 在进行任务2时,没有连接成功
  • 问题1解决过程:
  • 检查发现,是自己粗心忘记先打开服务端。随后再运行客户端即可。
  • 问题2:
  • 2019-2020-1 20175221 20175225 20175226 实验三 实时系统
  • 问题2解决过程:
  • 在编译服务端的时候,加上-lpthread来连接库函数即可

 码云链接

参考资料

上一篇:没看《庆余年》电视剧和小说,我大概知道了这些


下一篇:2019-2020-1 20175234 20175205 20175217 实验三 实时系统