HP Rp3440-4 - 9000 - 0 MB RAM Programmer's Manual page 119

Bsd sockets interface programmer’s guide
Hide thumbs Also See for Rp3440-4 - 9000 - 0 MB RAM:
Table of Contents

Advertisement

because the system uses some link-layer multicast addresses. For
example, the E/ISA interface card is limited to 16 multicast addresses,
and the system uses two of those. So all applications in the system can
join at most 14 unique multicast groups on each E/ISA interface.
An application automatically leaves a multicast group when it
terminates, either normally or abnormally. Alternatively, the application
can leave a group by using the IP_DROP_MEMBERSHIP socket option.
However, the system remains a member of a multicast group as long as
at least one application is a member.
If more than one application binds to the same port number on a system,
each application must set the SO_REUSEPORT socket option before
binding to the port. In that case, every application will receive all
multicast datagrams sent to the port number.
Joining a Multicast Group IP_ADD_MEMBERSHIP
In order to receive multicast datagrams, a system must join the
multicast group. An application can request that the system join a group
by using the IP_ADD_MEMBERSHIP socket option. For example:
#include <netinet/in.h>
struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr("224.1.2.3");
mreq.imr_interface.s_addr = INADDR_ANY;
setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
Each membership is associated with only one interface, and it is possible
to join the same multicast group on more than one interface. If
imr_interface is INADDR_ANY, the membership is joined on the
system default interface. Otherwise, imr_interface should be the IP
address of a local interface.
Leaving a Multicast Group IP_DROP_MEMBERSHIP
An application automatically leaves a multicast group when it
terminates, either normally or abnormally. Alternatively, the application
can leave a group by using the IP_DROP_MEMBERSHIP socket option.
For example:
#include <netinet/in.h>
struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = net_addr("224.1.2.3");
mreq.imr_interface.s_addr = INADDR_ANY;
setsockopt (s, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq));
Chapter 5
Advanced Topics for Internet Datagram Sockets
Sending and Receiving IP Multicast Datagrams
119

Advertisement

Table of Contents
loading

Table of Contents