zoukankan      html  css  js  c++  java
  • 课上测试

    课上测试

    测试要求

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

    客户端IP:XXXX
    服务器实现者学号:XXXXXXXX
    当前时间: XX:XX:XX

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

    实验代码

    srever.c

    #include <stdio.h>
    #include <stdlib.h>
    #include "csapp.h"
    #include <time.h>
    void echo(int connfd);
    int main(int argc, char **argv) 
    {
        int listenfd, connfd, port, clientlen;
        struct sockaddr_in clientaddr;
        struct hostent *hp;
        char *haddrp;
        if (argc != 2) {
        fprintf(stderr, "usage: %s <port>
    ", argv[0]);
        exit(0);
        }
        port = atoi(argv[1]);
        listenfd = Open_listenfd(port);
        while (1) {
        clientlen = sizeof(clientaddr);
        connfd = Accept(listenfd, (SA *)&clientaddr, &clientlen);
        /* determine the domain name and IP address of the client */
        hp = Gethostbyaddr((const char *)&clientaddr.sin_addr.s_addr, 
                   sizeof(clientaddr.sin_addr.s_addr), AF_INET);
        haddrp = inet_ntoa(clientaddr.sin_addr);
        printf("server connected to %s (%s)
    ", hp->h_name, haddrp);
        echo(connfd);
        Close(connfd);
        }
        exit(0);
    }
    void echo(int connfd)
    {
        size_t n;
        char buf[MAXLINE];
        rio_t rio;
        
        Rio_readinitb(&rio, connfd);
        while((n = Rio_readlineb(&rio, buf, MAXLINE)) != 0) {
            printf("客户端IP:127.0.0.1
    ");
            printf("服务器实现学号:20175310
    ");
            printf("server received %d bytes
    ", n);
            time_t t;
            time(&t);
            printf("当前时间:%s
    ",ctime(&t));
            Rio_writen(connfd, buf, n);
        }
    }
    

    client.c

    #include "csapp.h"
    int main(int argc, char **argv)
    {
        int clientfd, port;
        char *host, buf[MAXLINE];
        rio_t rio;
        if (argc != 3) {
            fprintf(stderr, "usage: %s <host> <port>
    ", argv[0]);
            exit(0);
        }
        host = argv[1];
        port = atoi(argv[2]);
        clientfd = Open_clientfd(host, port);
        Rio_readinitb(&rio, clientfd);
        while (Fgets(buf, MAXLINE, stdin) != NULL) {
            Rio_writen(clientfd, buf, strlen(buf));
            Rio_readlineb(&rio, buf, MAXLINE);
            Fputs(buf, stdout);
        }
        Close(clientfd);
        exit(0);
    }
    

    实验截图:


  • 相关阅读:
    使用logstash迁移elasticsearch
    cratedb 4.2.1单机安装
    es6.8.5集群部署(使用x-pack ssl方式)
    es从6.5升级到6.8(单节点)
    elasticsearch-6.8.5单机部署(当生产环境使用)
    mysql_upgrade升级(主从模式,先升级从库)
    mysql_upgrade升级(直接本地升级)
    主从数据不一致导出同步错误(从库记录存在导致写入报主键重复)
    12C下使用logminer
    mysql主库磁盘空间爆满导致从库错误
  • 原文地址:https://www.cnblogs.com/xicyannn/p/11939829.html
Copyright © 2011-2022 走看看