dddddd

#include "csapp.h"

void doit(int clientfd) {
    char line[MAXLINE];
    char message[MAXLINE];
    rio_t rio;
    int length;

    Rio_readinitb(&rio, clientfd);
    while (1) {
        Rio_readlineb(&rio, message, MAXLINE);
        sscanf(message, "%d", &length);
        Rio_readnb(&rio, message, (size_t)length);
        message[length] = '\0';
        printf("%s\n", message);

        message[0] = '\0';
        scanf("%s", line);
        while (strcmp(line,"over") != 0) {
            sprintf(message, "%s%s\n", message, line);
            scanf("%s", line);

        }
        length = strlen(message);
        sprintf(line, "%d\n", length);
        rio_writen(clientfd, line, strlen(line));
        rio_writen(clientfd, message, length);
    }
}

int main(int argc,char** argv) {
    int listenfd;
    int clientfd;
    SA addr;
    socklen_t len;

    if (argc != 2) {
        fprintf(stderr,"usage: ./server <port>\n");
        exit(0);
    }

    listenfd = Open_listenfd(argv[1]);
    while (1) {
        clientfd = Accept(listenfd, &addr, &len);
        printf("request received\n");
        doit(clientfd);
        /*if(Fork()==0){
            doit(clientfd);
            exit(0);
        }
        else { 
            Close(clientfd);
        }
        waitpid(-1, NULL, 0);*/
        close(clientfd);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值