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;
}
示例#2
0
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;
}