/* gcc serveur_tcp.c -o serveur_tcp */ #include #include #include #include #include #include #include # define NUM_PORT_SERV atoi(argv[1]) main(int argc, char *argv[]) { int i; int sock, sock_affecte, lg_nom_client, lg_mes; struct sockaddr_in nom, nom_client; char message[100]; /* construction du nom externe du socket local */ if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf ("erreur creation socket\n"); exit (1); } /* association nom interne - nom externe socket local */ nom.sin_family = AF_INET; nom.sin_port = NUM_PORT_SERV; nom.sin_addr.s_addr = INADDR_ANY; if (bind(sock, (struct sockaddr *)&nom, sizeof(nom)) == -1) { printf ("erreur bind\n"); exit(1); } /* attente demande de connexion */ if (listen(sock, 1) == -1) { printf ("erreur listen\n"); exit(1); } printf ("\n*** Attente demande de connexion ***\n\n"); /* acceptation demande de connexion */ lg_nom_client = sizeof(nom_client); if ((sock_affecte = accept(sock, (struct sockaddr *)&nom_client, &lg_nom_client)) == -1) { printf ("erreur accept\n"); exit(1); } printf ("*** Connexion etablie ***\n\n"); /* construction et envoi des messages */ strcpy(message,"Toulouse"); lg_mes = atoi(argv[2]); for (i=0; i< atoi(argv[3]); i++) { write(sock_affecte,message,lg_mes); printf ("message envoye : %s\n", message); } /* fermeture du socket */ sleep(1); close(sock); }