int main (int argc, char * argv[]) { int sock; char buffer[LG_BUFFER]; int nb_lus; struct addrinfo *results; if (lecture_arguments(argc, argv, 0, &results) < 0) exit(EXIT_FAILURE); if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket"); exit(EXIT_FAILURE); } if (bind(sock, results->ai_addr, results->ai_addrlen) < 0) { perror("bind"); exit(EXIT_FAILURE); } freeaddrinfo(results); setvbuf(stdout, NULL, _IONBF, 0); while (1) { if ((nb_lus = recv(sock, buffer, LG_BUFFER, 0)) == 0) break; if (nb_lus < 0) { perror("read"); break; } write(STDOUT_FILENO, buffer, nb_lus); } return EXIT_SUCCESS; }
int main (int argc, char * argv []) { int sock; struct sockaddr_in adresse; char buffer [LG_BUFFER]; int nb_lus; if (lecture_arguments (argc, argv, & adresse, "udp") < 0) exit (1); adresse . sin_family = AF_INET; if ((sock = socket (AF_INET, SOCK_DGRAM, 0)) < 0) { perror ("socket"); exit (1); } if (bind (sock, & adresse, sizeof (struct sockaddr_in)) < 0) { perror ("bind"); exit (1); } setvbuf (stdout, NULL, _IONBF, 0); while (1) { if ((nb_lus = recv (sock, buffer, LG_BUFFER, 0)) == 0) break; if (nb_lus < 0) { perror ("read"); break; } write (STDOUT_FILENO, buffer, nb_lus); } return (0); }
int main (int argc, char * argv []) { int sock; struct ip_mreq requete_multicast; struct sockaddr_in adresse; char buffer [LG_BUFFER]; int nb_lus; if (lecture_arguments (argc, argv, & adresse, "udp") < 0) exit (1); adresse . sin_family = AF_INET; if ((sock = socket (AF_INET, SOCK_DGRAM, 0)) < 0) { perror ("socket"); exit (1); } requete_multicast . imr_multiaddr . s_addr = adresse . sin_addr . s_addr; requete_multicast . imr_interface . s_addr = htons (INADDR_ANY); if (setsockopt (sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, & requete_multicast, sizeof (struct ip_mreq)) < 0) { perror ("setsockopt (IP_ADD_MEMBERSHIP)"); exit (1); } adresse . sin_addr . s_addr = htons (INADDR_ANY); if (bind (sock, & adresse, sizeof (struct sockaddr_in)) < 0) { perror ("bind"); exit (1); } setvbuf (stdout, NULL, _IONBF, 0); while (1) { if ((nb_lus = recv (sock, buffer, LG_BUFFER, 0)) == 0) break; if (nb_lus < 0) { perror ("read"); break; } write (STDOUT_FILENO, buffer, nb_lus); } return (0); }
int main (int argc, char * argv[]) { int sock; char buffer [LG_BUFFER]; int nb_lus; struct addrinfo *results; if (lecture_arguments(argc, argv, 0, &results) < 0) exit(EXIT_FAILURE); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(EXIT_FAILURE); } if (connect(sock, results->ai_addr, results->ai_addrlen) < 0) { perror("connect"); exit(EXIT_FAILURE); } freeaddrinfo(results); while (1) { if (fgets(buffer, 256, stdin) == NULL) break; if (buffer[strlen(buffer) - 1] == '\n') buffer[strlen(buffer) - 1] = '\0'; if (write(sock, buffer, strlen(buffer)) < 0) { perror("write"); break; } if ((nb_lus = read(sock, buffer, LG_BUFFER)) == 0) break; if (nb_lus < 0) { perror("read"); break; } fprintf(stdout, "%s\n", buffer); } return EXIT_SUCCESS; }