# Poco::Net

# class DatagramSocket

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

## Description

This class provides an interface to an UDP stream socket.

## Inheritance

Direct Base Classes: Socket

All Base Classes: Socket

Known Derived Classes: MulticastSocket

## Member Summary

Member Functions: bind, connect, getBroadcast, operator =, receiveBytes, receiveFrom, sendBytes, sendTo, setBroadcast

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

## Constructors

### DatagramSocket

DatagramSocket();

Creates an unconnected IPv4 datagram socket.

### DatagramSocket

explicit DatagramSocket(
IPAddress::Family family
);

Creates an unconnected datagram socket.

The socket will be created for the given address family.

### DatagramSocket

DatagramSocket(
const Socket & socket
);

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

### DatagramSocket

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

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

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

### DatagramSocket

DatagramSocket(
SocketImpl * pImpl
);

Creates the Socket and attaches the given SocketImpl. The socket takes owership of the SocketImpl.

The SocketImpl must be a StreamSocketImpl, otherwise an InvalidArgumentException will be thrown.

## Destructor

### ~DatagramSocket

~DatagramSocket();

Destroys the DatagramSocket.

## Member Functions

### bind

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

Bind a local address to the socket.

This is usually only done when establishing a server socket.

If reuseAddress is true, sets the SO_REUSEADDR socket option.

Cannot be used together with connect().

### connect

void connect(
const SocketAddress & address
);

Restricts incoming and outgoing packets to the specified address.

Cannot be used together with bind().

### getBroadcast

bool getBroadcast() const;

Returns the value of the SO_BROADCAST socket option.

### operator =

DatagramSocket & 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.

### receiveBytes

int receiveBytes(
void * buffer,
int length,
int flags = 0
);

Receives data from the socket and stores it in buffer. Up to length bytes are received.

Returns the number of bytes received.

### receiveFrom

int receiveFrom(
void * buffer,
int length,
SocketAddress & address,
int flags = 0
);

Receives data from the socket and stores it in buffer. Up to length bytes are received. Stores the address of the sender in address.

Returns the number of bytes received.

### sendBytes

int sendBytes(
const void * buffer,
int length,
int flags = 0
);

Sends the contents of the given buffer through the socket.

Returns the number of bytes sent, which may be less than the number of bytes specified.

### sendTo

int sendTo(
const void * buffer,
int length,
const SocketAddress & address,
int flags = 0
);

Sends the contents of the given buffer through the socket to the given address.

Returns the number of bytes sent, which may be less than the number of bytes specified.

### setBroadcast

void setBroadcast(
bool flag
);

Sets the value of the SO_BROADCAST socket option.

Setting this flag allows sending datagrams to the broadcast address.