#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);
}
}