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服务器并使用同步互斥机制保证计数正确
上方提交代码
下方提交测试
对比单线程版本的性能,并分析原因

实验过程:

 posted on 2017-11-19 22:09  20155327李百乾-  阅读(150)  评论(0编辑  收藏  举报