/* COISERVER - SERVER CONNESSION ORIENTED SU INTERNET PORT =1234*/ #include #include #include #include #include #define NSTRS 4 #define MSGLEN 32 char *strs[NSTRS] = { "1a stringa dal server", "2a stringa dal server", "3a stringa dal server", "4a stringa dal server\n" }; main() { char c; int fromlen; register int i, s, ns, pid; struct sockaddr_in myname, fromname; char str1[200]; if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("server:socket"); exit(1); } myname.sin_family = AF_INET; myname.sin_port = htons(1234); myname.sin_addr.s_addr = INADDR_ANY; if (bind(s, (struct sockaddr*) &myname, sizeof myname) < 0) { perror("client: bind"); exit(1); } if (listen(s, 5) < 0) { perror("client: listen"); exit(1); } while(1){ if ((ns = accept(s, NULL,0)) < 0) { perror("server:accept"); exit(1); } pid=fork(); if (pid == 0) { close(s); for (i=0; i< NSTRS; i++) send(ns,strs[i], MSGLEN, 0); for (i=0; i < NSTRS; i++) { fromlen = recv(ns, str1,MSGLEN,0); str1[fromlen] = '\0'; printf("%s\n",str1); } close(ns); exit(0); } /* usare wait(0) se si vuole attendere la morte del figlio prima /* di accettare una nuova connessione*/ /* pid = wait(0);*/ /* printf("terminato figlio %d \n", pid); */ } }