/* socket Internet de type datagramme */ /* gcc rec_UDP.c -o rec_UDP -lsocket –lnsl */ #include #include #include #include #include #define NUM_PORT_REC 9001 main(int argc, char *argv[]) { int sock, lg_max, lg_rec, lg_nom_em; struct sockaddr_in nom, nom_em; char message[100]; /* construction du nom externe du socket local */ if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 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_REC; nom.sin_addr.s_addr = INADDR_ANY; if (bind(sock, (struct sockaddr *)&nom, sizeof(nom)) == -1) { printf ("erreur bind\n"); exit(1); } /* reception des messages */ lg_max = 10; lg_rec = 0; lg_nom_em = sizeof(nom_em); for (;;) { printf ("\n*** Attente Message ***\n\n"); if ((lg_rec = recvfrom(sock,message,lg_max,0,(struct sockaddr *)&nom_em,&lg_nom_em)) > 0) { printf ("taille du message recu : %d\n", lg_rec); message[lg_rec]='\0'; printf ("message recu : %s \n\n", message); } else { printf ("erreur en reception"); exit(1); } } } Corrections TCP