2017-2018 20155327李百乾 实验三实时系统
实验一
实验要求:
学习使用Linux命令wc(1)
基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
客户端传一个文本文件给服务器
服务器返加文本文件中的单词数
上方提交代码
附件提交测试截图,至少要测试附件中的两个文件
实验过程:
1.通过帮助文档得知,WC命令为:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
2.题目要求WC1可知编写一个统计字节数的MYWC
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int countChar(char input[]){
int p_input = 0;
int count = 0;
int word = 0;
char ch;
while(p_input < strlen(input)){
ch = input[p_input];
if(ch==' '){
if(word){ //读取到空字符,而之前是非空字符,则说明读完了一个单词
count++;
word = 0;
}
}else{ //读取到第一个非空字符,说明是单词的开始
word = 1;
}
p_input++;
}
return count;
}
int main()
{
char input[256];
int p_input = 0;
int count = 0;
FILE *fp = fopen("text.txt","r");
fgets(input,256,fp);
fclose(fp);
count = countChar(input);
printf("Your words count:\n%d\n",count);
return 0;
}
3.代码放在之前的sever和client代码中,执行结果如下:
实验二
题目要求:
使用多线程实现wc服务器并使用同步互斥机制保证计数正确
上方提交代码
下方提交测试
对比单线程版本的性能,并分析原因