Reading Socket Options

The TTL of a multicast for a socket can be determined by reading the value from the socket options. The following code example shows how the TTL value is read.

int ttl;  // Allocate space for TTL.
int sizeofttl = sizeof(ttl); // Create an integer that contains the size of the TTL value.
getsockopt(
           sock,
           IPPROTO_IP,
           IP_MULTICAST_TTL,
            (char *)&ttl,
           &sizeofttl);

The ttl parameter in the preceding code example contains the current TTL set value for the multicasts through a socket defined as sock.

Each multicast transmission is sent from a single network interface, even if the host has more than one multicasting-capable interface. The following code example shows how a socket option is available to determine which interface is currently used for transmissions from a specified socket.

unsigned long addr;            //Allocate space for address.
int sizeofaddr = sizeof(addr); //Create an integer containing size of
                               //address.
getsockopt(
           sock,
           IPPROTO_IP,
           IP_MULTICAST_IF,
            (char *)&addr, 
           &sizeofaddr );

The addr parameter contains the local IP address of the current outgoing interface after a getsockopt call.

By default, if a multicast datagram is sent to a group, to which the sending host belongs, a copy of the datagram on the outgoing interface is looped back by IP for local delivery. Any attempt to disable this multicast loop-back results in the call failing with the error message WSAENOPROTOOPT.

 Last updated on Friday, April 02, 2004

© 1992-2000 Microsoft Corporation. All rights reserved.