# Poco::Net

# class MulticastSocket

Library: Net
Package: Sockets
Header: Poco/Net/MulticastSocket.h

## Description

A MulticastSocket is a special DatagramSocket that can be used to send packets to and receive packets from multicast groups.

## Inheritance

Direct Base Classes: DatagramSocket

All Base Classes: DatagramSocket, Socket

## Member Summary

Member Functions: getInterface, getLoopback, getTimeToLive, joinGroup, leaveGroup, operator =, setInterface, setLoopback, setTimeToLive

Inherited Functions: address, available, bind, close, connect, getBlocking, getBroadcast, getKeepAlive, getLinger, getNoDelay, getOOBInline, getOption, getReceiveBufferSize, getReceiveTimeout, getReuseAddress, getReusePort, getSendBufferSize, getSendTimeout, impl, init, operator !=, operator <, operator <=, operator =, operator ==, operator >, operator >=, peerAddress, poll, receiveBytes, receiveFrom, secure, select, sendBytes, sendTo, setBlocking, setBroadcast, setKeepAlive, setLinger, setNoDelay, setOOBInline, setOption, setReceiveBufferSize, setReceiveTimeout, setReuseAddress, setReusePort, setSendBufferSize, setSendTimeout, sockfd, supportsIPv4, supportsIPv6

## Constructors

### MulticastSocket

MulticastSocket();

Creates the MulticastSocket.

### MulticastSocket

explicit MulticastSocket(
IPAddress::Family family
);

Creates an unconnected multicast socket.

The socket will be created for the given address family.

### MulticastSocket

MulticastSocket(
const Socket & socket
);

Creates the MulticastSocket with the SocketImpl from another socket. The SocketImpl must be a DatagramSocketImpl, otherwise an InvalidArgumentException will be thrown.

### MulticastSocket

MulticastSocket(
const SocketAddress & address,
bool reuseAddress = false
);

Creates a multicast socket and binds it to the given address.

Depending on the address family, the socket will be either an IPv4 or an IPv6 socket.

## Destructor

### ~MulticastSocket

~MulticastSocket();

Destroys the DatagramSocket.

## Member Functions

### getInterface

NetworkInterface getInterface() const;

Returns the interface used for sending multicast packets.

### getLoopback

bool getLoopback() const;

Returns true if and only if loopback for multicast packets is enabled, false otherwise.

### getTimeToLive

unsigned getTimeToLive() const;

Returns the TTL/hop limit for outgoing packets.

### joinGroup

void joinGroup(
const IPAddress & groupAddress
);

Joins the specified multicast group at the default interface.

### joinGroup

void joinGroup(
const IPAddress & groupAddress,
const NetworkInterface & interfc
);

Joins the specified multicast group at the given interface.

### leaveGroup

void leaveGroup(
const IPAddress & groupAddress
);

Leaves the specified multicast group at the default interface.

### leaveGroup

void leaveGroup(
const IPAddress & groupAddress,
const NetworkInterface & interfc
);

Leaves the specified multicast group at the given interface.

### operator =

MulticastSocket & operator = (
const Socket & socket
);

Assignment operator.

Releases the socket's SocketImpl and attaches the SocketImpl from the other socket and increments the reference count of the SocketImpl.

### setInterface

void setInterface(
const NetworkInterface & interfc
);

Sets the interface used for sending multicast packets.

To select the default interface, specify an empty interface.

This is done by setting the IP_MULTICAST_IF/IPV6_MULTICAST_IF socket option.

### setLoopback

void setLoopback(
bool flag
);

Enable or disable loopback for multicast packets.

Sets the value of the IP_MULTICAST_LOOP/IPV6_MULTICAST_LOOP socket option.

### setTimeToLive

void setTimeToLive(
unsigned value
);

Specifies the TTL/hop limit for outgoing packets.

Sets the value of the IP_MULTICAST_TTL/IPV6_MULTICAST_HOPS socket option.