sockpp
Modern C++ socket library wrapper
|
Base class for datagram sockets. More...
#include <datagram_socket.h>
Public Member Functions | |
datagram_socket () | |
Creates an uninitialized datagram socket. | |
datagram_socket (socket_t handle) | |
Creates a datagram socket from an existing OS socket handle and claims ownership of the handle. More... | |
datagram_socket (const sock_address &addr) | |
Creates a UDP socket and binds it to the address. More... | |
datagram_socket (datagram_socket &&other) | |
Move constructor. More... | |
datagram_socket & | operator= (datagram_socket &&rhs) |
Move assignment. More... | |
bool | connect (const sock_address &addr) |
Connects the socket to the remote address. More... | |
ssize_t | send_to (const void *buf, size_t n, int flags, const sock_address &addr) |
Sends a message to the socket at the specified address. More... | |
ssize_t | send_to (const std::string &s, int flags, const sock_address &addr) |
Sends a string to the socket at the specified address. More... | |
ssize_t | send_to (const void *buf, size_t n, const sock_address &addr) |
Sends a message to another socket. More... | |
ssize_t | send_to (const std::string &s, const sock_address &addr) |
Sends a string to another socket. More... | |
ssize_t | send (const void *buf, size_t n, int flags=0) |
Sends a message to the socket at the default address. More... | |
ssize_t | send (const std::string &s, int flags=0) |
Sends a string to the socket at the default address. More... | |
ssize_t | recv_from (void *buf, size_t n, int flags, sock_address *srcAddr=nullptr) |
Receives a message on the socket. More... | |
ssize_t | recv_from (void *buf, size_t n, sock_address *srcAddr=nullptr) |
Receives a message on the socket. More... | |
ssize_t | recv (void *buf, size_t n, int flags=0) |
Receives a message on the socket. More... | |
![]() | |
socket () | |
Creates an unconnected (invalid) socket. | |
socket (socket_t h) | |
Creates a socket from an existing OS socket handle. More... | |
socket (socket &&sock) noexcept | |
Move constructor. More... | |
virtual | ~socket () |
Destructor closes the socket. | |
bool | is_open () const |
Determines if the socket is open (valid). More... | |
bool | operator! () const |
Determines if the socket is closed or in an error state. More... | |
operator bool () const | |
Determines if the socket is open and in an error-free state. More... | |
socket_t | handle () const |
Get the underlying OS socket handle. More... | |
virtual sa_family_t | family () const |
Gets the network family of the address to which the socket is bound. More... | |
socket | clone () const |
Creates a new socket that refers to this one. More... | |
void | clear (int val=0) |
Clears the error flag for the object. More... | |
socket_t | release () |
Releases ownership of the underlying socket object. More... | |
void | reset (socket_t h=INVALID_SOCKET) |
Replaces the underlying managed socket object. More... | |
socket & | operator= (socket &&sock) noexcept |
Move assignment. More... | |
bool | bind (const sock_address &addr) |
Binds the socket to the specified address. More... | |
sock_address_any | address () const |
Gets the local address to which the socket is bound. More... | |
sock_address_any | peer_address () const |
Gets the address of the remote peer, if this socket is connected. More... | |
bool | get_option (int level, int optname, void *optval, socklen_t *optlen) const |
Gets the value of a socket option. More... | |
template<typename T > | |
bool | get_option (int level, int optname, T *val) const |
Gets the value of a socket option. More... | |
bool | set_option (int level, int optname, const void *optval, socklen_t optlen) |
Sets the value of a socket option. More... | |
template<typename T > | |
bool | set_option (int level, int optname, const T &val) |
Sets the value of a socket option. More... | |
bool | set_non_blocking (bool on=true) |
Places the socket into or out of non-blocking mode. More... | |
int | last_error () const |
Gets the code for the last errror. More... | |
std::string | last_error_str () const |
Gets a string describing the last errror. More... | |
bool | shutdown (int how=SHUT_RDWR) |
Shuts down all or part of the full-duplex connection. More... | |
bool | close () |
Closes the socket. More... | |
Static Public Attributes | |
static constexpr int | COMM_TYPE = SOCK_DGRAM |
The socket 'type' for communications semantics. More... | |
Static Protected Member Functions | |
static socket_t | create_handle (int domain) |
![]() | |
static int | get_last_error () |
OS-specific means to retrieve the last error from an operation. More... | |
Additional Inherited Members | |
![]() | |
static void | initialize () |
Initializes the socket (sockpp) library. More... | |
static void | destroy () |
Shuts down the socket library. More... | |
static socket | create (int domain, int type, int protocol=0) |
Creates a socket with the specified communications characterics. More... | |
static std::tuple< socket, socket > | pair (int domain, int type, int protocol=0) |
Creates a pair of connected sockets. More... | |
static std::string | error_str (int errNum) |
Gets a string describing the specified error. More... | |
![]() | |
bool | close_on_err () |
Closes the socket without checking for errors or updating the last error. More... | |
void | set_last_error () |
Cache the last system error code into this object. More... | |
template<typename T > | |
T | check_ret (T ret) const |
Checks the value and if less than zero, sets last error. More... | |
template<typename T > | |
bool | check_ret_bool (T ret) const |
Checks the value and if less than zero, sets last error. More... | |
socket_t | check_socket (socket_t ret) const |
Checks the value and if it is not a valid socket, sets last error. More... | |
bool | check_socket_bool (socket_t ret) const |
Checks the value and if it is INVALID_SOCKET, sets last error. More... | |
Base class for datagram sockets.
Datagram sockets are normally connectionless, where each packet is individually routed and delivered.
|
inlineexplicit |
Creates a datagram socket from an existing OS socket handle and claims ownership of the handle.
handle | A socket handle from the operating system. |
|
explicit |
Creates a UDP socket and binds it to the address.
addr | The address to bind. |
|
inline |
Move constructor.
other | The other socket to move to this one |
|
inline |
Connects the socket to the remote address.
In the case of datagram sockets, this does not create an actual connection, but rather specifies the address to which datagrams are sent by default and the only address from which packets are received.
addr | The address on which to "connect". |
|
inline |
Move assignment.
rhs | The other socket to move into this one. |
|
inline |
Receives a message on the socket.
buf | Buffer to get the incoming data. |
n | The number of bytes to read. |
flags | The option bit flags. See send(2). |
ssize_t sockpp::datagram_socket::recv_from | ( | void * | buf, |
size_t | n, | ||
int | flags, | ||
sock_address * | srcAddr = nullptr |
||
) |
Receives a message on the socket.
buf | Buffer to get the incoming data. |
n | The number of bytes to read. |
flags | The option bit flags. See send(2). |
srcAddr | Receives the address of the peer that sent the message |
|
inline |
Receives a message on the socket.
buf | Buffer to get the incoming data. |
n | The number of bytes to read. |
srcAddr | Receives the address of the peer that sent the message |
|
inline |
Sends a message to the socket at the default address.
The socket should be connected before calling this.
buf | The date to send. |
n | The number of bytes in the data buffer. |
flags | The option bit flags. See send(2). |
|
inline |
Sends a string to the socket at the default address.
The socket should be connected before calling this
s | The string to send. |
flags | The option bit flags. See send(2). |
|
inline |
Sends a message to the socket at the specified address.
buf | The data to send. |
n | The number of bytes in the data buffer. |
flags | The flags. See send(2). |
addr | The remote destination of the data. |
|
inline |
Sends a string to the socket at the specified address.
s | The string to send. |
flags | The flags. See send(2). |
addr | The remote destination of the data. |
|
inline |
Sends a message to another socket.
buf | The data to send. |
n | The number of bytes in the data buffer. |
addr | The remote destination of the data. |
|
inline |
Sends a string to another socket.
s | The string to send. |
addr | The remote destination of the data. |
|
static |
The socket 'type' for communications semantics.