UCommon
Public Member Functions
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:
Inheritance graph
[legend]
Collaboration diagram for ost::UDPDuplex:
Collaboration graph
[legend]

Public Member Functions

Error connect (const ucommon::Socket::address &host)
 Associate the duplex with a specified peer host. More...
 
Error connect (const IPV4Host &host, tpport_t port)
 
Error connect (const IPV6Host &host, tpport_t port)
 
Error disconnect (void)
 Disassociate this duplex from any host connection. More...
 
 UDPDuplex (const ucommon::Socket::address &bind)
 Create a UDP duplex as a pair of UDP simplex objects bound to alternating and interconnected port addresses. More...
 
 UDPDuplex (const IPV4Address &bind, tpport_t port)
 
 UDPDuplex (const IPV6Address &bind, tpport_t port)
 
- Public Member Functions inherited from ost::UDPTransmit
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...
 
- Public Member Functions inherited from ost::UDPReceive
bool isInputReady (timeout_t timeout=ucommon::Timer::inf)
 See if input queue has data packets available. More...
 
ssize_t receive (void *buf, size_t len)
 Receive a data packet from the connected peer host. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ost::UDPTransmit
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)
 
- Protected Member Functions inherited from ost::UDPSocket
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.
 
- Protected Member Functions inherited from ost::UDPReceive
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 IPV6Host &host, tpport_t port)
 
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. More...
 
Error join (const ucommon::Socket::address &ia)
 
Error join (const IPV4Multicast &ia)
 
Error join (const IPV6Multicast &ia)
 
Error setMulticast (bool enable)
 
Error setRouting (bool enable)
 
 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. More...
 
 UDPReceive (const IPV4Address &bind, tpport_t port)
 
 UDPReceive (const IPV6Address &bind, tpport_t port)
 
- 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.

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.

◆ 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: