UCommon
ost::UDPDuplex Class Reference

UDP duplex connections impliment a bi-directional point-to-point UDP session between two peer hosts. More...

#include <udp.h>

Inheritance diagram for ost::UDPDuplex:
Collaboration diagram for ost::UDPDuplex:

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.
Public Member Functions inherited from ost::UDPTransmit
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.
Public Member Functions inherited from ost::UDPReceive
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

Protected Member Functions inherited from ost::UDPTransmit
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.
Protected Member Functions inherited from ost::UDPSocket
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.
Protected Member Functions inherited from ost::UDPReceive
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.
Protected Attributes inherited from ost::UDPSocket
Family family
Socket::address peer

Detailed Description

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.

Author
David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m

Unreliable Datagram Peer Associations.

Definition at line 564 of file udp.h.

Constructor & Destructor Documentation

◆ UDPDuplex()

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.

Parameters
bindaddress to bind this socket to.
portnumber to bind sender.
Here is the call graph for this function:

Member Function Documentation

◆ connect()

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.

Returns
0 on success, error code on error.
Parameters
hostaddress to connect socket to.
portnumber to connect socket to.
Here is the call graph for this function:

◆ disconnect()

Error ost::UDPDuplex::disconnect ( void )

Disassociate this duplex from any host connection.

No data should be read or written until a connection is established.

Returns
0 on success, error code on error.

The documentation for this class was generated from the following file: