#include "csapp.h" /* Implement a web server that always returns the requested page from http://www.cs.utah.edu/ */ int main() { char* portno = "4400"; int ls = Open_listenfd(portno); while(1) { struct sockaddr_in addr; unsigned int len = sizeof(addr); char *buffer, *cbuffer; int s, web; s = Accept(ls, (struct sockaddr *)&addr, &len); cbuffer = malloc(MAXBUF); rio_t rio; size_t n; Rio_readinitb(&rio, s); web = Open_clientfd("www.cs.utah.edu", "80"); while((n = Rio_readlineb(&rio, cbuffer, MAXLINE)) > 2) { Rio_writen(web, cbuffer, n); } Rio_writen(web, cbuffer, n); printf("Finished reading from client\n"); free(cbuffer); buffer = malloc(MAXBUF); while(1) { int bytes = Rio_readn(web, buffer, MAXBUF); if(bytes == 0) break; Rio_writen(s, buffer, bytes); } free(buffer); Close(s); Close(web); } }