#include #include #include #include #include #include #include #include main (int argc, char * argv[]) { int s,ns; struct sockaddr_in where; struct protoent * myproto; FILE * worker; char buf[200]; struct sockaddr_in sot; socklen_t sotlen; int val,conns=0; if ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1){ perror("Socket not created "); exit(-1); } val = 1; if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)) == -1) { perror("Setsocketopt failed "); exit(-1); } where.sin_addr.s_addr = htonl(INADDR_ANY); where.sin_port = htons(5600); where.sin_family = AF_INET; if (bind(s,(struct sockaddr *) &where, sizeof(where)) == -1) { perror("Bind of socket failed"); exit(-1); } if (listen(s, 5) < 0) { perror("Listen Failed "); exit(-1); } sotlen = sizeof(sot); while (( ns = accept(s,(struct sockaddr *) &sot, &sotlen)) != -1) { conns++; worker = fdopen(ns,"r+"); fgets(buf,200,worker); printf("Connection %d: The client said: %s", conns,buf); fprintf(worker, "Thanks for connecting %d times.\n",conns); fclose(worker); if (0 == strcmp(buf, "QUIT")){ break; } } if (ns == -1) { perror("the socket returned a -1 "); } }