zoukankan      html  css  js  c++  java
  • 课下作业和课上作业

    课下作业

    课上练习3

    要求

    基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端
    服务器响应消息格式是

    客户端IP:XXXX

    服务器实现者学号:

    当前时间: XX:XX:XX


    上方提交代码

    提交一个客户端至少查询三次时间的截图测试截图

    提交至少两个客户端查询时间的截图测试截图

    实现过程

    首先下载csapp.h和csapp.c,这两个在网上查的时候所给的网址无法打开,始终无法找到这两个文件,只能从同学的码云上下载了这两个文件。

    client

    service

    完成截图

    课下练习1

    要求

    1 完成家庭作业4.47,4.48,4.49

    2 相应代码反汇编成X86-64汇编

    3 把上述X86-64汇编翻译成Y86汇编,并给出相应机器码

    发操作过程、测试、问题解决过程博客链接

    完成过程

    首先把代码改成指针的类型:

    
            for(j=i;j<count;j++)
            {
                if(*(data+i)>*(data+j))
                {
                    int temp;
                    temp=*(data+i);
                    *(data+i)=*(data+j);
                    *(data+j)=temp;
                }
            }
        }
    }
    main()
    {
        long data[10];
        int i;
        printf("请输入数字:");
        for(i=0;i<10;i++)
            scanf("%d",&data[i]);
        bubble(&data,10);
        for(i=0;i<10;i++)
            printf("%d	",data[i]);
    }
    

    然后再输入
    1.gcc -S -o main.s main.c

    2.as -o main.o main.s

    3.objdump -d main.o
    就会出现x86-64的汇编代码

    下课练习2

    要求

    把课上练习3的daytime服务器分别用多进程和多线程实现成并发服务器并测试

    实现过程

    /* 
     * echoservert.c - A concurrent echo server using threads
     */
    /* $begin echoservertmain */
    #include "csapp.h"
    
    void echo(int connfd);
    void *thread(void *vargp);
    char *haddrp;
    
    int main(int argc, char **argv) 
    {
        int listenfd, *connfdp, port;
        socklen_t clientlen=sizeof(struct sockaddr_in);
        struct sockaddr_in clientaddr;
        pthread_t tid; 
    
        if (argc != 2) {
    	fprintf(stderr, "usage: %s <port>
    ", argv[0]);
    	exit(0);
        }
        port = atoi(argv[1]);
    
        listenfd = Open_listenfd(port);
        while (1) {
    	connfdp = Malloc(sizeof(int)); //line:conc:echoservert:beginmalloc
    	*connfdp = Accept(listenfd, (SA *) &clientaddr, &clientlen); //line:conc:echoservert:endmalloc
    	haddrp = inet_ntoa(clientaddr.sin_addr);
    	Pthread_create(&tid, NULL, thread, connfdp);
        }
    }
    
    /* thread routine */
    void *thread(void *vargp) 
    {  
        int connfd = *((int *)vargp);
        Pthread_detach(pthread_self()); //line:conc:echoservert:detach
        Free(vargp);                    //line:conc:echoservert:free
        echo(connfd);
        Close(connfd);
        return NULL;
    }
    /* $end echoservertmain */
    void echo(int connfd) 
    {
        static char timestr[40];  
        time_t t;  
        struct tm *nowtime;
        time(&t);  
        nowtime = localtime(&t);  
        strftime(timestr,sizeof(timestr),"%Y-%m-%d %H:%M:%S",nowtime);
        size_t n; 
        char buf[MAXLINE]; 
        rio_t rio;
    
        Rio_readinitb(&rio, connfd);
        while((n = Rio_readlineb(&rio, buf, MAXLINE)) != 0) { //line:netp:echo:eof
    	printf("server received %d bytes
    ", (int)n);
    	printf("客户端IP:%s
    ",haddrp);
    	printf("服务器实现者学号:20155301
    ");
    	printf("当前时间:%s
    ",timestr);
    	printf("
    ");
    	Rio_writen(connfd, buf, n);
        }
    }
    

  • 相关阅读:
    HDU 5835 Danganronpa 贪心
    HDU 5842 Lweb and String 水题
    HDU 5832 A water problem 水题
    Codeforces Beta Round #14 (Div. 2) A. Letter 水题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem K. UTF-8 Decoder 模拟题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem I. Alien Rectangles 数学
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem H. Parallel Worlds 计算几何
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem F. Turning Grille 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
  • 原文地址:https://www.cnblogs.com/fengxingck/p/7822212.html
Copyright © 2011-2022 走看看