Advertisement
  Home Tuesday, 09 March 2010 
Main Menu
 Home
 News
 FAQ
 C Source
 The Web Links
 Contact Us
 Administrator

Login Form
Username

Password

Remember me
Forgotten your password?
No account yet? Create one

Statistics
OS: Windows
PHP: 5.2.7-dev
MySQL: 4.0.15-nt
Time: 16:40
Members: 804
Hits: 750779
News: 13
WebLinks: 6

Online Users
No Users Online

Newsflash
The Triple Play Forum, the European Advanced Networking Test Center (EANTC) and Upper Side will organize a multi-vendor public interoperability showcase in the area of Triple Play services during the TVoDSL Conference, to be held January 25-28 2005, with a private hot-staging test event in Berlin, Germany two weeks before.
The interoperability test and demonstration addresses IP multicast and QoS transport: DSLAMs , DSL modems , FTTX CPE   switches and Ethernet Switches


Multicast Client Example   PDF  Print  E-mail 
Contributed by Bilbo Baggins  
Tuesday, 01 June 2004
IP Multicast source for client

/*  multirec.c - see also diewitherror.c and multisnd.c */

/* compile  $ cc -o multirec.exe multirec.c diewitherror.c */

 

/*                   program      multicast ip  port */

/* useage example $ ./multirec.exe 224.0.22.1 9210  */

 

/* tested with cygwin gcc win32- linux gcc -sun */

 

#include <stdio.h>      /* for printf() and fprintf() */

#include <sys/socket.h> /* for socket(), connect(), sendto(), and recvfrom() */

#include <arpa/inet.h>  /* for sockaddr_in and inet_addr() */

#include <stdlib.h>     /* for atoi() and exit() */

#include <string.h>     /* for memset() */

#include <unistd.h>     /* for close() */

 

 

#include <time.h> /* modified for timestamps */

 

 

 

#define MAXRECVSTRING 255  /* Longest string to receive */

 

void DieWithError(char *errorMessage);  /* External error handling function */

 

int main(int argc, char *argv[])

{

    int sock;                         /* Socket */

    struct sockaddr_in multicastAddr; /* Multicast Address */

    char *multicastIP;                /* IP Multicast Address */

    unsigned short multicastPort;     /* Port */

    char recvString[MAXRECVSTRING+1]; /* Buffer for received string */

    int recvStringLen;                /* Length of received string */

    struct ip_mreq multicastRequest;  /* Multicast address join structure */

 

    if (argc != 3)    /* Test for correct number of arguments */

    {

        fprintf(stderr,"Usage: %s <Multicast IP> <Multicast Port>\n", argv[0]);

        exit(1);

    }

 

    multicastIP = argv[1];        /* First arg: Multicast IP address (dotted quad) */

    multicastPort = atoi(argv[2]);/* Second arg: Multicast port */

 

    /* Create a best-effort datagram socket using UDP */

    if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)

        DieWithError("socket() failed");

 

    /* Construct bind structure */

    memset(&multicastAddr, 0, sizeof(multicastAddr));   /* Zero out structure */

    multicastAddr.sin_family = AF_INET;                 /* Internet address family */

    multicastAddr.sin_addr.s_addr = htonl(INADDR_ANY);  /* Any incoming interface */

    multicastAddr.sin_port = htons(multicastPort);      /* Multicast port */

 

    /* Bind to the multicast port */

    if (bind(sock, (struct sockaddr *) &multicastAddr, sizeof(multicastAddr)) < 0)

        DieWithError("bind() failed");

 

    /* Specify the multicast group */

    multicastRequest.imr_multiaddr.s_addr = inet_addr(multicastIP);

    /* Accept multicast from any interface */

    multicastRequest.imr_interface.s_addr = htonl(INADDR_ANY);

    /* Join the multicast address */

    if (setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void *) &multicastRequest,

          sizeof(multicastRequest)) < 0)

        DieWithError("setsockopt() failed");

 

    /* Receive a single datagram from the server */

    /* Start loop here */

 

int c;

int x1 = 1000000; /* initialize loop variables */

int x2 = 0;

 

while (x2 < x1)

{

/* x1++ */

/* uncomment the line above to have a limit */

if ((recvStringLen = recvfrom(sock, recvString, MAXRECVSTRING, 0, NULL, 0)) < 0)

        DieWithError("recvfrom() failed");

 

    recvString[recvStringLen] = '\0';

 

 

 

time_t tim=time(NULL);  /* get time stamp to print with recieved data */

             char *s=ctime(&tim);

             s[strlen(s)-1]=0;        // remove \n

         /*    printf("it is %s now.\n", s); */

     

    printf("Time Received: %s : %s\n", s, recvString);    /* Print the received string */

 

}

    close(sock);

    exit(0);

 

} /* main */

 

   

 

 

 

Last Updated ( Tuesday, 29 June 2004 )

Browser Prefs
Add to Favorites
Make Home Page

Newsfeeds
Internet:Business News
Tue, 09 Mar 2010 15:47
Stocks managed to pare their losses Friday despite plenty of bad news.
Palm, RIM Lead Tech Stocks Higher
In purchasing Aardvark, Google looks to extend its social media reach with a service that taps into the knowledge of the online community for answers. What do competitors say?
Google Goes More Social With Aardvark Buy
Analysts see bellwether computing giant on solid ground as it prepares to report earnings for the first quarter of the fiscal year, an event that promises insight into the state of the larger technology industry.
HP Expected to Deliver Solid Earnings
BBC: Technology
Tue, 09 Mar 2010 15:47
BBC News
Hard drives are about to undergo one of the biggest format shifts in 30 years but it could cause problems for Windows XP users.
Hard drive evolution could hit XP
A plan to create a .xxx net domain for adult content will be revisited three years after it was rejected by internet regulators.
Porn net domain name plan revived
A never-before-seen reaction in nanotubes could make for batteries that pack a mighty punch, say researchers.
Nanotech 'fuse' for novel battery

Most Read
Multicast Client Example
Multicast Server Example
Welcome to IP Multicast Standards Initiative
diewitherror.c Multicast Client & Server
What ipmulticast.com will provide

: Home :: News :: FAQ :: C Source :: The Web Links :: Contact Us :: Administrator :
powered by world multicast ietf rmt wg ietf rmt wg