|
GNU CommonC++
|
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 <socket.h>
Public Member Functions | |
| ssize_t | transmit (const char *buffer, size_t len) |
| Transmit "send" to use "connected" send rather than sendto. | |
| bool | isOutputReady (unsigned long timeout=0l) |
| See if output queue is empty for sending more packets. | |
| Error | setRouting (bool enable) |
| Error | setTypeOfService (Tos tos) |
| Error | setBroadcast (bool enable) |
Protected Member Functions | |
| UDPTransmit (Family family=IPV4) | |
| Create a UDP transmitter. | |
| UDPTransmit (const IPV4Address &bind, tpport_t port=5005) | |
| 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 (const IPV6Address &bind, tpport_t port=5005) | |
| Error | connect (const IPV4Host &host, tpport_t port) |
| Associate this socket with a specified peer host. | |
| 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. | |
| Error | connect (const IPV4Multicast &mgroup, tpport_t port) |
| Associate this socket with a multicast group. | |
| Error | connect (const IPV6Multicast &mgroup, tpport_t port) |
| ssize_t | send (const void *buf, size_t len) |
| Transmit "send" to use "connected" send rather than sendto. | |
| void | endTransmitter (void) |
| Stop transmitter. | |
| SOCKET | getTransmitter (void) |
| Error | setMulticast (bool enable) |
| Error | setTimeToLive (unsigned char ttl) |
| Protected Member Functions inherited from ost::UDPSocket | |
| 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 IPV4Address &bind, tpport_t port) | |
| 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 (const IPV6Address &bind, tpport_t port) | |
| virtual | ~UDPSocket () |
| Destroy a UDP socket as a socket. | |
| Error | setLoopback (bool enable) |
| Set the loopback. | |
| Error | setMulticast (bool enable) |
| Set the multicast. | |
| Error | setTimeToLive (char ttl) |
| Set time to live. | |
| void | setPeer (const IPV4Host &host, tpport_t port) |
| set the peer address to send message packets to. | |
| void | connect (const IPV4Host &host, tpport_t port) |
| void | setPeer (const IPV6Host &host, tpport_t port) |
| void | connect (const IPV6Host &host, tpport_t port) |
| Socket::Error | getInterfaceIndex (const char *ethX, int &InterfaceIndex) |
| get the interface index for a named network device | |
| Socket::Error | join (const IPV4Multicast &ia, int InterfaceIndex) |
| join a multicast group on a particular interface | |
| ssize_t | send (const void *buf, size_t len) |
| Send a message packet to a peer host. | |
| ssize_t | receive (void *buf, size_t len, bool reply=false) |
| Receive a message from any host. | |
| IPV4Host | getIPV4Peer (tpport_t *port=NULL) const |
| Examine address of sender of next waiting packet. | |
| IPV4Host | getPeer (tpport_t *port=NULL) const |
| IPV6Host | getIPV6Peer (tpport_t *port=NULL) const |
| ssize_t | peek (void *buf, size_t len) |
| Examine contents of next waiting packet. | |
| void | setPeer (const char *service) |
| Associate socket with a named connection. | |
| void | connect (const char *service) |
| Error | disconnect (void) |
| Disassociate this socket from any host connection. | |
| Protected Member Functions inherited from ost::Socket | |
| Error | error (Error error, const char *err=NULL, long systemError=0) const |
| This service is used to throw all socket errors which usually occur during the socket constructor. | |
| void | error (const char *err) const |
| This service is used to throw application defined socket errors where the application specific error code is a string. | |
| void | setError (bool enable) |
| This service is used to turn the error handler on or off for "throwing" exceptions by manipulating the thrown flag. | |
| void | endSocket (void) |
| Used as the default destructor for ending a socket. | |
| Error | connectError (void) |
| Used as a common handler for connection failure processing. | |
| Error | sendLimit (int limit=2048) |
| Set the send limit. | |
| Error | receiveLimit (int limit=1) |
| Set thr receive limit. | |
| Error | sendTimeout (timeout_t timer) |
| Set the send timeout for sending raw network data. | |
| Error | receiveTimeout (timeout_t timer) |
| Receive timeout for receiving raw network data. | |
| Error | sendBuffer (unsigned size) |
| Set the protocol stack network kernel send buffer size associated with the socket. | |
| Error | receiveBuffer (unsigned size) |
| Set the protocol stack network kernel receive buffer size associated with the socket. | |
| Error | bufferSize (unsigned size) |
| Set the total protocol stack network kernel buffer size for both send and receive together. | |
| Error | setBroadcast (bool enable) |
| Set the subnet broadcast flag for the socket. | |
| Error | setMulticastByFamily (bool enable, Family family=IPV4) |
| Setting multicast binds the multicast interface used for the socket to the interface the socket itself has been implicitly bound to. | |
| Error | setLoopbackByFamily (bool enable, Family family=IPV4) |
| Set the multicast loopback flag for the socket. | |
| Error | setTimeToLiveByFamily (unsigned char ttl, Family fam=IPV4) |
| Set the multicast time to live for a multicast socket. | |
| Error | join (const IPV4Multicast &ia) |
| Join a multicast group. | |
| Error | join (const IPV6Multicast &ia) |
| Error | drop (const IPV4Multicast &ia) |
| Drop membership from a multicast group. | |
| Error | drop (const IPV6Multicast &ia) |
| Error | setRouting (bool enable) |
| Set the socket routing to indicate if outgoing messages should bypass normal routing (set false). | |
| Error | setNoDelay (bool enable) |
| Enable/disable delaying packets (Nagle algorithm). | |
| Socket (int domain, int type, int protocol=0) | |
| An unconnected socket may be created directly on the local machine. | |
| Socket (SOCKET fd) | |
| A socket object may be created from a file descriptor when that descriptor was created either through a socket() or accept() call. | |
| Socket () | |
| Create an inactive socket object for base constructors. | |
| Socket (const Socket &source) | |
| A socket can also be constructed from an already existing Socket object. | |
| ssize_t | readLine (char *buf, size_t len, timeout_t timeout=0) |
| Process a logical input line from a socket descriptor directly. | |
| virtual ssize_t | readData (void *buf, size_t len, char separator=0, timeout_t t=0) |
| Read in a block of len bytes with specific separator. | |
| virtual ssize_t | writeData (const void *buf, size_t len, timeout_t t=0) |
| Write a block of len bytes to socket. | |
| virtual | ~Socket () |
| The socket base class may be "thrown" as a result of an error, and the "catcher" may then choose to destroy the object. | |
| Socket & | operator= (const Socket &from) |
| Sockets may also be duplicated by the assignment operator. | |
| virtual IPV4Host | getIPV4Sender (tpport_t *port=NULL) const |
| May be used to examine the origin of data waiting in the socket receive queue. | |
| IPV4Host | getSender (tpport_t *port=NULL) const |
| virtual IPV6Host | getIPV6Sender (tpport_t *port=NULL) const |
| IPV4Host | getIPV4Peer (tpport_t *port=NULL) const |
| Get the host address and port of the socket this socket is connected to. | |
| IPV4Host | getPeer (tpport_t *port=NULL) const |
| IPV6Host | getIPV6Peer (tpport_t *port=NULL) const |
| IPV4Host | getIPV4Local (tpport_t *port=NULL) const |
| Get the local address and port number this socket is currently bound to. | |
| IPV4Host | getLocal (tpport_t *port=NULL) const |
| IPV6Host | getIPV6Local (tpport_t *port=NULL) const |
| IPV4Host | getIPV4NAT (tpport_t *port=NULL) const |
| Perform NAT table lookup for this socket. | |
| IPV4Host | getNAT (tpport_t *port) const |
| IPV6Host | getIPV6NAT (tpport_t *port=NULL) const |
| void | setCompletion (bool immediate) |
| Used to specify blocking mode for the socket. | |
| Error | setLinger (bool linger) |
| Enable lingering sockets on close. | |
| Error | setKeepAlive (bool enable) |
| Set the keep-alive status of this socket and if keep-alive messages will be sent. | |
| Error | setTypeOfService (Tos service) |
| Set packet scheduling on platforms which support ip quality of service conventions. | |
| bool | isConnected (void) const |
| Can test to see if this socket is "connected", and hence whether a "catch" can safely call getPeer(). | |
| bool | isActive (void) const |
| Test to see if the socket is at least operating or if it is mearly initialized. | |
| bool | operator! () const |
| Operator based testing to see if a socket is currently active. | |
| bool | isBroadcast (void) const |
| Return if broadcast has been enabled for the specified socket. | |
| bool | isRouted (void) const |
| Return if socket routing is enabled. | |
| Error | getErrorNumber (void) const |
| Often used by a "catch" to fetch the last error of a thrown socket. | |
| 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. | |
| long | getSystemError (void) const |
| const char * | getSystemErrorString (void) const |
| virtual bool | isPending (Pending pend, timeout_t timeout=TIMEOUT_INF) |
| Get the status of pending operations. | |
Additional Inherited Members | |
| Protected Types inherited from ost::Socket | |
| enum | State { INITIAL , AVAILABLE , BOUND , CONNECTED , CONNECTING , STREAM } |
| typedef enum State | State |
| enum | Family { IPV6 = AF_INET6 , IPV4 = AF_INET } |
| 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 } |
| enum | Tos { tosLowDelay = 0 , tosThroughput , tosReliability , tosMinCost , tosInvalid } |
| enum | Pending { pendingInput , pendingOutput , pendingError } |
| typedef enum Family | Family |
| typedef enum Error | Error |
| typedef enum Tos | Tos |
| typedef enum Pending | Pending |
| Static Protected Member Functions inherited from ost::Socket | |
| static bool | check (Family fam) |
| See if a specific protocol family is available in the current runtime environment. | |
| Protected Attributes inherited from ost::UDPSocket | |
| union { | |
| struct sockaddr_in6 ipv6 | |
| struct sockaddr_in ipv4 | |
| } | peer |
| Family | family |
| Protected Attributes inherited from ost::Socket | |
| struct { | |
| bool thrown: 1 | |
| bool broadcast: 1 | |
| bool route: 1 | |
| bool keepalive: 1 | |
| bool loopback: 1 | |
| bool multicast: 1 | |
| bool completion: 1 | |
| bool linger: 1 | |
| unsigned ttl: 8 | |
| } | flags |
| SOCKET volatile | so |
| the actual socket descriptor, in Windows, unlike posix it cannot be used as an file descriptor that way madness lies – jfc | |
| State volatile | state |
| Static Protected Attributes inherited from ost::Socket | |
| static Mutex | mutex |
Representing half of a two-way UDP connection, the UDP transmitter can broadcast data to another selected peer host or to an entire subnet.
Unreliable Datagram Peer Associations.
Create a UDP transmitter.
References ost::UDPSocket::family, and ost::Socket::IPV4.
|
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. |
|
protected |
|
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. |
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 multicast group.
| mgroup | address of the multicast group to send to. |
| port | port number |
|
protected |
|
protected |
|
inlineprotected |
Stop transmitter.
References ost::Socket::endSocket().
|
inlineprotected |
References ost::Socket::so.
|
inline |
See if output queue is empty for sending more packets.
| timeout | in milliseconds to wait. |
References ost::Socket::isPending(), and ost::Socket::pendingOutput.
|
inlineprotected |
Transmit "send" to use "connected" send rather than sendto.
| buf | address of buffer to send. |
| len | of bytes to send. |
References _IOLEN64, MSG_NOSIGNAL, and ost::Socket::so.
|
inline |
References ost::Socket::setBroadcast().
|
inlineprotected |
References ost::UDPSocket::family, and ost::Socket::setMulticastByFamily().
|
inline |
References ost::Socket::setRouting().
|
inlineprotected |
References ost::UDPSocket::family, ost::Socket::setTimeToLiveByFamily(), and ost::Socket::ttl.
References ost::Socket::setTypeOfService().
|
inline |
Transmit "send" to use "connected" send rather than sendto.
| buffer | address of buffer to send. |
| len | of bytes to send. |
References _IOLEN64, MSG_DONTWAIT, MSG_NOSIGNAL, and ost::Socket::so.