CoreComponents 3.0.0
A Modern C++ Toolkit
Loading...
Searching...
No Matches
DatagramSocket Class Reference

Datagram socket. More...

#include <cc/DatagramSocket>

Inheritance diagram for DatagramSocket:

Public Member Functions

 DatagramSocket ()=default
 Create a null datagram socket.
 
 DatagramSocket (const SocketAddress &address)
 Create a new datagram socket bound to address.
 
int receive (Out< Bytes > message, Out< SocketAddress > address=None{})
 Receive message from host address.
 
int send (const Bytes &message, const SocketAddress &address=SocketAddress{})
 Send message to host address.
 
void connect (const SocketAddress &address)
 Restrict communication on this socket to a single source.
 
void broadcasting (bool on)
 Enable sending datagrams to broadcast addresses (disabled by default)
 
void join (const SocketAddress &address)
 Join multicast a group identified by address.
 
- Public Member Functions inherited from Socket
 Socket ()=default
 Create an invalid networking socket.
 
void setIncomingTimeout (double interval)
 Set the timeout of accumulating incoming data
 
void setOutgoingTimeout (double interval)
 Set the timeout of accumulating outgoing data
 
SocketAddress getLocalAddress () const
 Retrieve the address which is locally bound to this socket.
 
- Public Member Functions inherited from IoStream
 IoStream ()=default
 Create a null I/O stream.
 
 IoStream (int fd)
 Create an I/O stream for file descriptor fd.
 
int fd () const
 File descriptor
 
void close ()
 Manually close this I/O stream.
 
void shutdown (IoShutdown mode=IoShutdown::Full)
 Manually shutdown this I/O stream.
 
void duplicateTo (IoStream &other)
 Duplicate this I/O stream.
 
IoStream duplicate () const
 Duplicate I/O stream other.
 
bool isInteractive () const
 Check if this is a teletype (e.g.
 
void echo (bool on)
 Set echo mode of this I/O stream to on
 
int ioctl (int request, void *arg)
 Issue an device control request.
 
long scatterLimit () const
 I/O scatter limit (in bytes)
 
void setScatterLimit (long newLimit)
 Set the I/O scatter limit (in bytes)
 
- Public Member Functions inherited from Stream
 Stream ()=default
 Create a null stream.
 
bool waitEstablished (int timeout=-1)
 Wait until the connection is fully established.
 
bool wait (IoEvent event, int timeout=-1)
 Wait for an I/O event.
 
long read (Out< Bytes > buffer, long maxFill=-1)
 Read available bytes into buffer and return number of bytes read.
 
void write (const Bytes &buffer, long fill=-1)
 Write fill bytes from buffer (if fill < 0 write all bytes from buffer)
 
void write (const List< Bytes > &buffers)
 Write the contents of buffers in one go.
 
void write (const List< String > &parts)
 Convenience method, equivalent to 'write(parts.join())'.
 
void write (const struct iovec *iov, int iovcnt)
 Write the contents of the iov buffers in one go.
 
void write (const char *s)
 Write C-string s.
 
bool isDiscarding () const
 Return true if this stream is discarding all writes
 
long long transferTo (const Stream &sink, long long count, const Bytes &buffer)
 Transfer a span of bytes.
 
long long transferTo (const Stream &sink, long long count=-1)
 Transfer a span of bytes.
 
long defaultTransferUnit () const
 Default I/O buffer size.
 
long long skip (long long count)
 Read and discard count bytes.
 
void drain (const Bytes &auxBuffer=Bytes{})
 Read everything that is left.
 
long readSpan (Out< Bytes > buffer)
 Read fixed number of bytes.
 
String readSpan (long count)
 Read a fixed number of bytes.
 
String readAll ()
 Read the entire stream.
 
- Public Member Functions inherited from Object
 Object ()=default
 Create a null object.
 
 operator bool () const
 Check if this is a non-null object.
 
bool isNull () const
 Check if this is a null object.
 
template<class T >
bool is () const
 Check if this object is of type T.
 
template<class T >
as () const
 Cast this object to type T.
 
bool isWeak () const
 Check if the underlying object reference is weak.
 
bool operator== (const Object &other) const
 Equality operator.
 
std::strong_ordering operator<=> (const Object &other) const
 Ordering operator.
 
long useCount () const
 Reference count.
 

Protected Member Functions

State & me ()
 
- Protected Member Functions inherited from Socket
 Socket (ProtocolFamily family, int type)
 
 Socket (int fd)
 
 Socket (State *newState)
 
- Protected Member Functions inherited from IoStream
 IoStream (State *newState)
 
State & me ()
 
const State & me () const
 
- Protected Member Functions inherited from Stream
 Stream (State *newState)
 
Stateme ()
 
const Stateme () const
 
- Protected Member Functions inherited from Object
template<class T >
weak () const
 
template<class T >
void initOnce ()
 Create the object state when called the first time.
 
template<class T >
void initOncePerThread ()
 Create a distinct object state for each thread when called the first time in that thread.
 
 Object (State *newState)
 Initialize object with newState.
 
 Object (State *state, Alias)
 
 Object (State *state, Weak)
 
Objectoperator= (std::nullptr_t)
 

Additional Inherited Members

- Static Public Member Functions inherited from IoStream
static IoStreaminput ()
 Standard input stream.
 
static IoStreamoutput ()
 Standard output stream.
 
static IoStreamerror ()
 Standard error stream.
 
static void pair (Out< IoStream > a, Out< IoStream > b)
 Establish a full-duplex communication channel between a and b.
 
- Static Protected Member Functions inherited from Object
template<class T >
static T alias (const State *state)
 Create an alias object for the given state.
 
template<class T >
static T weak (const State *state)
 
- Protected Attributes inherited from Object
Handle< Stateme
 Internal object state
 

Detailed Description

Datagram socket.

Constructor & Destructor Documentation

◆ DatagramSocket() [1/2]

DatagramSocket ( )
default

Create a null datagram socket.

◆ DatagramSocket() [2/2]

DatagramSocket ( const SocketAddress & address)
explicit

Create a new datagram socket bound to address.

Member Function Documentation

◆ receive()

int receive ( Out< Bytes > message,
Out< SocketAddress > address = None{} )

Receive message from host address.

Parameters
messageMessage buffer
addressSender address
Returns
Number of bytes received
Exceptions
HostUnreachableAn ICMP error from an earlier send() has been received

◆ send()

int send ( const Bytes & message,
const SocketAddress & address = SocketAddress{} )

Send message to host address.

Parameters
messageMessage to send
addressDestination address
Returns
Number of bytes send
Exceptions
HostUnreachableAn ICMP error from an earlier sendTo() has been received

◆ connect()

void connect ( const SocketAddress & address)

Restrict communication on this socket to a single source.

Parameters
addressPeer address of which to receive datagrams from (unicast or multicast)

◆ broadcasting()

void broadcasting ( bool on)

Enable sending datagrams to broadcast addresses (disabled by default)

◆ join()

void join ( const SocketAddress & address)

Join multicast a group identified by address.