UCommon
Public Member Functions | Protected Member Functions
ost::UDPTransmit Class Reference

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>

Inheritance diagram for ost::UDPTransmit:
Inheritance graph
[legend]
Collaboration diagram for ost::UDPTransmit:
Collaboration graph
[legend]

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)
 
- 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.
 

Additional Inherited Members

- Protected Attributes inherited from ost::UDPSocket
Family family
 
Socket::address peer
 

Detailed Description

Representing half of a two-way UDP connection, the UDP transmitter can broadcast data to another selected peer host or to an entire subnet.

Author
David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m Unreliable Datagram Peer Associations.

Definition at line 302 of file udp.h.

Constructor & Destructor Documentation

◆ UDPTransmit()

ost::UDPTransmit::UDPTransmit ( const ucommon::Socket::address bind)
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.

Parameters
bindaddress to bind this socket to.
portnumber to bind this socket to. If 0 or not specified, the bind socket address port is used.

Member Function Documentation

◆ connect() [1/3]

Error ost::UDPTransmit::connect ( const ucommon::Socket::address host)
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.

Returns
0 on success, -1 on error.
Parameters
hostaddress to connect socket to.
portto connect socket to.

◆ connect() [2/3]

Error ost::UDPTransmit::connect ( const IPV4Broadcast subnet,
tpport_t  port 
)
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.

Returns
0 on success, -1 on error.
Parameters
subnetsubnet address to broadcast into.
porttransport port to broadcast into.

◆ connect() [3/3]

Error ost::UDPTransmit::connect ( const IPV4Multicast mgroup,
tpport_t  port 
)
protected

Associate this socket with a multicast group.

Returns
0 on success, -1 on error.
Parameters
mgroupaddress of the multicast group to send to.
portport number

◆ isOutputReady()

bool ost::UDPTransmit::isOutputReady ( unsigned long  timeout = 0l)
inline

See if output queue is empty for sending more packets.

Returns
true if output available.
Parameters
timeoutin milliseconds to wait.

Definition at line 429 of file udp.h.

◆ send()

ssize_t ost::UDPTransmit::send ( const void *  buf,
size_t  len 
)
inlineprotected

Transmit "send" to use "connected" send rather than sendto.

Returns
number of bytes sent.
Parameters
bufaddress of buffer to send.
lenof bytes to send.

Definition at line 387 of file udp.h.

◆ transmit()

ssize_t ost::UDPTransmit::transmit ( const char *  buffer,
size_t  len 
)
inline

Transmit "send" to use "connected" send rather than sendto.

Note
Windows does not support MSG_DONTWAIT, so it is defined as 0 on that platform.
Returns
number of bytes sent.
Parameters
bufferaddress of buffer to send.
lenof bytes to send.

Definition at line 420 of file udp.h.


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