UCommon
|
UDP duplex connections impliment a bi-directional point-to-point UDP session between two peer hosts. More...
#include <udp.h>
Public Member Functions | |
Error | connect (const IPV4Host &host, tpport_t port) |
Error | connect (const IPV6Host &host, tpport_t port) |
Error | connect (const ucommon::Socket::address &host) |
Associate the duplex with a specified peer host. | |
Error | disconnect (void) |
Disassociate this duplex from any host connection. | |
UDPDuplex (const IPV4Address &bind, tpport_t port) | |
UDPDuplex (const IPV6Address &bind, tpport_t port) | |
UDPDuplex (const ucommon::Socket::address &bind) | |
Create a UDP duplex as a pair of UDP simplex objects bound to alternating and interconnected port addresses. | |
![]() | |
bool | isOutputReady (unsigned long timeout=0l) |
See if output queue is empty for sending more packets. | |
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. | |
![]() | |
bool | isInputReady (timeout_t timeout=ucommon::Timer::inf) |
See if input queue has data packets available. | |
ssize_t | receive (void *buf, size_t len) |
Receive a data packet from the connected peer host. | |
Additional Inherited Members | |
![]() | |
Error | connect (const IPV4Broadcast &subnet, tpport_t port) |
Associate this socket with a subnet of peer hosts for subnet broadcasting. | |
Error | connect (const IPV4Host &host, tpport_t port) |
Error | connect (const IPV4Multicast &mgroup, tpport_t port) |
Associate this socket with a multicast group. | |
Error | connect (const IPV6Address &host, tpport_t port) |
Error | connect (const IPV6Multicast &mgroup, tpport_t port) |
Error | connect (const ucommon::Socket::address &host) |
Associate this socket with a specified peer host. | |
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. | |
Error | setMulticast (bool enable) |
Error | setTimeToLive (uint8_t ttl) |
UDPTransmit (const IPV4Address &bind, tpport_t port=5005) | |
UDPTransmit (const IPV6Address &bind, tpport_t port=5005) | |
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. | |
UDPTransmit (Family family=IPV4) | |
Create a UDP transmitter. | |
![]() | |
void | connect (const char *service) |
void | connect (const IPV4Host &host, tpport_t port) |
void | connect (const IPV6Host &host, tpport_t port) |
void | connect (const ucommon::Socket::address &host) |
Error | disconnect (void) |
Disassociate this socket from any host connection. | |
Socket::Error | getInterfaceIndex (const char *ethX, int &InterfaceIndex) |
get the interface index for a named network device | |
IPV4Host | getIPV4Peer (tpport_t *port=NULL) |
IPV6Host | getIPV6Peer (tpport_t *port=NULL) |
ucommon::Socket::address | getPeer () |
Examine address of sender of next waiting packet. | |
IPV4Host | getPeer (tpport_t *port) |
Socket::Error | join (const IPV4Multicast &ia, int InterfaceIndex) |
Socket::Error | join (const ucommon::Socket::address &ia, int InterfaceIndex=0) |
join a multicast group on a particular interface | |
ssize_t | peek (void *buf, size_t len) |
Examine contents of next waiting packet. | |
ssize_t | receive (void *buf, size_t len, bool reply=false) |
Receive a message from any host. | |
ssize_t | send (const void *buf, size_t len) |
Send a message packet to a peer host. | |
Error | setLoopback (bool enable) |
Set the loopback. | |
Error | setMulticast (bool enable) |
Set the multicast. | |
void | setPeer (const char *service) |
Associate socket with a named connection. | |
void | setPeer (const IPV4Host &host, tpport_t port) |
void | setPeer (const IPV6Host &host, tpport_t port) |
void | setPeer (const ucommon::Socket::address &host) |
set the peer address to send message packets to. | |
Error | setTimeToLive (char ttl) |
Set time to live. | |
UDPSocket (const char *name, Family family=IPV4) | |
Create a UDP socket bound by a service name. | |
UDPSocket (const IPV4Address &bind, tpport_t port) | |
UDPSocket (const IPV6Address &bind, tpport_t port) | |
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. | |
UDPSocket (Family family=IPV4) | |
Create an unbound UDP socket, mostly for internal use. | |
virtual | ~UDPSocket () |
Destroy a UDP socket as a socket. | |
![]() | |
Error | connect (const IPV4Host &host, tpport_t port) |
Error | connect (const IPV6Host &host, tpport_t port) |
Error | connect (const ucommon::Socket::address &host) |
Associate this socket with a specified peer host. | |
Error | drop (const IPV4Multicast &ia) |
Error | drop (const IPV6Multicast &ia) |
void | endReceiver (void) |
End receiver. | |
SOCKET | getReceiver (void) const |
bool | isPendingReceive (timeout_t timeout) |
Check for pending data. | |
Error | join (const IPV4Multicast &ia) |
Error | join (const IPV6Multicast &ia) |
Error | join (const ucommon::Socket::address &ia) |
Error | setMulticast (bool enable) |
Error | setRouting (bool enable) |
UDPReceive (const IPV4Address &bind, tpport_t port) | |
UDPReceive (const IPV6Address &bind, tpport_t port) | |
UDPReceive (const ucommon::Socket::address &bind) | |
Create a UDP receiver, 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. | |
![]() | |
Family | family |
Socket::address | peer |
UDP duplex connections impliment a bi-directional point-to-point UDP session between two peer hosts.
Two UDP sockets are typically used on alternating port addresses to assure that sender and receiver data does not collide or echo back. A UDP Duplex is commonly used for full duplex real-time streaming of UDP data between hosts.
Unreliable Datagram Peer Associations.
ost::UDPDuplex::UDPDuplex | ( | const ucommon::Socket::address & | bind | ) |
Create a UDP duplex as a pair of UDP simplex objects bound to alternating and interconnected port addresses.
bind | address to bind this socket to. |
port | number to bind sender. |
Error ost::UDPDuplex::connect | ( | const ucommon::Socket::address & | host | ) |
Associate the duplex with a specified peer host.
Both the sender and receiver will be interconnected with the remote host.
host | address to connect socket to. |
port | number to connect socket to. |
Error ost::UDPDuplex::disconnect | ( | void | ) |
Disassociate this duplex from any host connection.
No data should be read or written until a connection is established.