int serveur_tcp (void) { int sock_contact; int sock_connectee; struct sockaddr_in adresse; socklen_t longueur; sock_contact = cree_socket_stream (NULL, NULL, "tcp"); if (sock_contact < 0) return (-1); listen (sock_contact, 5); fprintf (stdout, "Mon adresse >> "); affiche_adresse_socket (sock_contact); while (! quitter_le_serveur ()) { longueur = sizeof (struct sockaddr_in); sock_connectee = accept (sock_contact, & adresse, & longueur); if (sock_connectee < 0) { perror ("accept"); return (-1); } switch (fork ()) { case 0 : /* fils */ close (sock_contact); traite_connexion (sock_connectee); exit (0); case -1 : perror ("fork"); return (-1); default : /* père */ close (sock_connectee); } } return (0); }
int serveur (void) { int sock_contact; int sock_connectee; struct sockaddr_in adresse; socklen_t longueur; sock_contact = cree_socket_stream(NULL, NULL, "UDP"); if (sock_contact < 0) return -1; listen(sock_contact, 5); fprintf(stdout, "Mon adresse >>\n"); affiche_adresse_socket(sock_contact); while(! quitter()) { longueur = sizeof(struct sockaddr_in); sock_connectee = accept(sock_contact, (struct sockadrr *)& adresse, & longueur); if(sock_connectee < 0) { perror ("accpet"); return -1; } switch (fork()) { case 0: close(sock_contact); connexion(sock_connectee); exit(EXIT_SUCCESS); case -1: perror("fork"); return -1; default: close(sock_connectee); } } return 0; }