UCommon
|
Representing half of a two-way UDP connection, the UDP transmitter can broadcast data to another selected peer host or to an entire subnet. More...
#include <udp.h>
Public Member Functions | |
bool | isOutputReady (unsigned long timeout=0l) |
See if output queue is empty for sending more packets. More... | |
Error | setBroadcast (bool enable) |
Error | setRouting (bool enable) |
Error | setTypeOfService (Tos tos) |
ssize_t | transmit (const char *buffer, size_t len) |
Transmit "send" to use "connected" send rather than sendto. More... | |
Protected Member Functions | |
Error | connect (const ucommon::Socket::address &host) |
Associate this socket with a specified peer host. More... | |
Error | connect (const IPV4Host &host, tpport_t port) |
Error | connect (const IPV6Address &host, tpport_t port) |
Error | connect (const IPV4Broadcast &subnet, tpport_t port) |
Associate this socket with a subnet of peer hosts for subnet broadcasting. More... | |
Error | connect (const IPV4Multicast &mgroup, tpport_t port) |
Associate this socket with a multicast group. More... | |
Error | connect (const IPV6Multicast &mgroup, tpport_t port) |
void | endTransmitter (void) |
Stop transmitter. | |
SOCKET | getTransmitter (void) |
ssize_t | send (const void *buf, size_t len) |
Transmit "send" to use "connected" send rather than sendto. More... | |
Error | setMulticast (bool enable) |
Error | setTimeToLive (uint8_t ttl) |
UDPTransmit (Family family=IPV4) | |
Create a UDP transmitter. | |
UDPTransmit (const ucommon::Socket::address &bind) | |
Create a UDP transmitter, bind it to a specific interface and port address so that other UDP sockets on remote machines (or the same host) may find and send UDP messages to it, and associate it with a given port on a peer host. More... | |
UDPTransmit (const IPV4Address &bind, tpport_t port=5005) | |
UDPTransmit (const IPV6Address &bind, tpport_t port=5005) | |
![]() | |
void | connect (const ucommon::Socket::address &host) |
void | connect (const IPV4Host &host, tpport_t port) |
void | connect (const IPV6Host &host, tpport_t port) |
void | connect (const char *service) |
Error | disconnect (void) |
Disassociate this socket from any host connection. More... | |
Socket::Error | getInterfaceIndex (const char *ethX, int &InterfaceIndex) |
get the interface index for a named network device More... | |
IPV4Host | getIPV4Peer (tpport_t *port=NULL) |
IPV6Host | getIPV6Peer (tpport_t *port=NULL) |
ucommon::Socket::address | getPeer () |
Examine address of sender of next waiting packet. More... | |
IPV4Host | getPeer (tpport_t *port) |
Socket::Error | join (const ucommon::Socket::address &ia, int InterfaceIndex=0) |
join a multicast group on a particular interface More... | |
Socket::Error | join (const IPV4Multicast &ia, int InterfaceIndex) |
ssize_t | peek (void *buf, size_t len) |
Examine contents of next waiting packet. More... | |
ssize_t | receive (void *buf, size_t len, bool reply=false) |
Receive a message from any host. More... | |
ssize_t | send (const void *buf, size_t len) |
Send a message packet to a peer host. More... | |
Error | setLoopback (bool enable) |
Set the loopback. | |
Error | setMulticast (bool enable) |
Set the multicast. | |
void | setPeer (const ucommon::Socket::address &host) |
set the peer address to send message packets to. More... | |
void | setPeer (const IPV4Host &host, tpport_t port) |
void | setPeer (const IPV6Host &host, tpport_t port) |
void | setPeer (const char *service) |
Associate socket with a named connection. | |
Error | setTimeToLive (char ttl) |
Set time to live. | |
UDPSocket (Family family=IPV4) | |
Create an unbound UDP socket, mostly for internal use. | |
UDPSocket (const char *name, Family family=IPV4) | |
Create a UDP socket bound by a service name. | |
UDPSocket (const ucommon::Socket::address &bind) | |
Create a UDP socket and bind it to a specific interface and port address so that other UDP sockets on remote machines (or the same host) may find and send UDP messages to it. More... | |
UDPSocket (const IPV4Address &bind, tpport_t port) | |
UDPSocket (const IPV6Address &bind, tpport_t port) | |
virtual | ~UDPSocket () |
Destroy a UDP socket as a socket. | |
![]() | |
struct in_addr | getaddress (const IPV4Address &ia) const |
struct in6_addr | getaddress (const IPV6Address &ia) const |
Error | getErrorNumber (void) const |
Often used by a "catch" to fetch the last error of a thrown socket. More... | |
const char * | getErrorString (void) const |
Often used by a "catch" to fetch the user set error string of a thrown socket, but only if EXTENDED error codes are used. More... | |
IPV4Host | getIPV4Local (in_port_t *port=NULL) const |
Get the local address and port number this socket is currently bound to. More... | |
IPV4Host | getIPV4Peer (in_port_t *port=NULL) const |
virtual IPV4Host | getIPV4Sender (in_port_t *port=NULL) const |
IPV6Host | getIPV6Local (in_port_t *port=NULL) const |
IPV6Host | getIPV6Peer (in_port_t *port=NULL) const |
virtual IPV6Host | getIPV6Sender (in_port_t *port=NULL) const |
IPV4Host | getLocal (in_port_t *port) const |
ucommon::Socket::address | getLocal () const |
ucommon::Socket::address | getPeer () const |
Get the host address and port of the socket this socket is connected to. More... | |
IPV4Host | getPeer (in_port_t *port) const |
ucommon::Socket::address | getSender () const |
May be used to examine the origin of data waiting in the socket receive queue. More... | |
IPV4Host | getSender (in_port_t *port) const |
long | getSystemError (void) const |
const char * | getSystemErrorString (void) const |
bool | isActive (void) const |
Test to see if the socket is at least operating or if it is mearly initialized. More... | |
bool | isBroadcast (void) const |
Return if broadcast has been enabled for the specified socket. More... | |
bool | isConnected (void) const |
Can test to see if this socket is "connected", and hence whether a "catch" can safely call getPeer(). More... | |
virtual bool | isPending (Pending pend, timeout_t timeout=ucommon::Timer::inf) |
Get the status of pending operations. More... | |
bool | isRouted (void) const |
Return if socket routing is enabled. More... | |
operator bool () const | |
bool | operator! () const |
Operator based testing to see if a socket is currently active. | |
Socket & | operator= (const Socket &from) |
Sockets may also be duplicated by the assignment operator. | |
void | setCompletion (bool immediate) |
Used to specify blocking mode for the socket. More... | |
Error | setKeepAlive (bool enable) |
Set the keep-alive status of this socket and if keep-alive messages will be sent. More... | |
Error | setLinger (bool linger) |
Enable lingering sockets on close. More... | |
Error | setTypeOfService (Tos service) |
Set packet scheduling on platforms which support ip quality of service conventions. More... | |
Additional Inherited Members | |
![]() | |
enum | Error { errSuccess = 0, errCreateFailed, errCopyFailed, errInput, errInputInterrupt, errResourceFailure, errOutput, errOutputInterrupt, errNotConnected, errConnectRefused, errConnectRejected, errConnectTimeout, errConnectFailed, errConnectInvalid, errConnectBusy, errConnectNoRoute, errBindingFailed, errBroadcastDenied, errRoutingDenied, errKeepaliveDenied, errServiceDenied, errServiceUnavailable, errMulticastDisabled, errTimeout, errNoDelay, errExtended, errLookupFail, errSearchErr, errInvalidValue } |
typedef enum Error | Error |
enum | Family { IPV6 = 1, IPV4 = 2 } |
typedef enum Family | Family |
enum | Pending { pendingInput, pendingOutput, pendingError } |
typedef enum Pending | Pending |
enum | State { INITIAL, AVAILABLE, BOUND, CONNECTED, CONNECTING, STREAM } |
typedef enum State | State |
enum | Tos { tosLowDelay = 0, tosThroughput, tosReliability, tosMinCost, tosInvalid } |
typedef enum Tos | Tos |
![]() | |
static bool | check (Family fam) |
See if a specific protocol family is available in the current runtime environment. More... | |
Representing half of a two-way UDP connection, the UDP transmitter can broadcast data to another selected peer host or to an entire subnet.
|
protected |
Create a UDP transmitter, bind it to a specific interface and port address so that other UDP sockets on remote machines (or the same host) may find and send UDP messages to it, and associate it with a given port on a peer host.
On failure to bind, an exception is thrown. This class is only used to build the UDP Duplex.
bind | address to bind this socket to. |
port | number to bind this socket to. If 0 or not specified, the bind socket address port is used. |
|
protected |
Associate this socket with a specified peer host.
The port number from the constructor will be used. All UDP packets will be sent to and received from the specified host.
host | address to connect socket to. |
port | to connect socket to. |
|
protected |
Associate this socket with a subnet of peer hosts for subnet broadcasting.
The server must be able to assert broadcast permission for the socket.
subnet | subnet address to broadcast into. |
port | transport port to broadcast into. |
|
protected |
Associate this socket with a multicast group.
mgroup | address of the multicast group to send to. |
port | port number |
|
inline |
|
inlineprotected |
|
inline |