UCommon
Public Member Functions | Static Public Member Functions
ucommon::ListenSocket Class Reference

A bound socket used to listen for inbound socket connections. More...

#include <socket.h>

Inheritance diagram for ucommon::ListenSocket:
Inheritance graph
[legend]
Collaboration diagram for ucommon::ListenSocket:
Collaboration graph
[legend]

Public Member Functions

socket_t accept (struct sockaddr_storage *address=((void *) 0))
 Accept a socket connection.
socket_t getsocket (void)
 Get the socket descriptor of the listener.
 ListenSocket (char *address, char *service, unsigned backlog=5, int family=AF_UNSPEC, int type=0, int protocol=0)
 Create and bind a listener socket.
 operator socket_t ()
 Get the socket descriptor of the listener.
socket_t operator* ()
 Get the socket descriptor of the listener by pointer reference.
bool waitConnection (timeout_t timeout=Timer::inf)
 Wait for a pending connection.

Static Public Member Functions

static socket_t create (char *address, char *service, unsigned backlog=5, int family=AF_UNSPEC, int type=0, int protocol=0)
 Create a listen socket directly.

Additional Inherited Members

- Protected Types inherited from ucommon::Socket
typedef void * set_t
 External definition of fd_set type.
- Protected Member Functions inherited from ucommon::Socket
int blocking (bool enable)
 Set socket blocking I/O mode.
int broadcast (bool enable)
 Set socket for unicast mode broadcasts.
void cancel (void)
 Cancel pending i/o by shutting down the socket.
int connectto (struct addrinfo *list)
 Connect our socket to a remote host from an address list.
int disconnect (void)
 Disconnect a connected socket.
int drop (struct addrinfo *list)
 Drop socket from multicast group.
int err (void)
 Get error code.
int getError (void)
 Get socket error code.
unsigned getPending (void)
 Get the number of bytes of data in the socket receive buffer.
int gettype (void)
 Get the type of a socket.
bool isConnected (void)
 Test if socket is connected.
bool isPending (unsigned value)
 See the number of bytes in the receive queue.
int join (struct addrinfo *list)
 Join socket to multicast group.
int keepalive (bool enable)
 Set socket for keepalive packets.
int loopback (bool enable)
 Set loopback to read multicast packets we broadcast.
int multicast (unsigned ttl=1)
 Set multicast mode and multicast broadcast range.
int nodelay (void)
 Set nodelay option for tcp socket.
 operator bool ()
 Test if socket is valid.
bool operator! ()
 Test if socket is invalid.
Socketoperator= (socket_t socket)
 Assign socket from a socket descriptor.
size_t peek (void *data, size_t number)
 Peek at data waiting in the socket receive buffer.
size_t printf (char *format,...)
 Print formatted string to socket.
int priority (int scheduling)
 Set packet priority, 0 to 6 unless privileged.
size_t readfrom (void *data, size_t number, struct sockaddr_storage *address=((void *) 0))
 Read data from the socket receive buffer.
size_t readline (char *data, size_t size)
 Read a newline of text data from the socket and save in NULL terminated string.
size_t readline (string &buffer)
 Read a string of input from the socket and strip trailing newline.
int recvsize (unsigned size)
 Set the size of the socket receive buffer.
void release (void)
 Shutdown and close the socket.
unsigned segsize (unsigned size)
 Set segment size and get mtu of a socket.
int sendsize (unsigned size)
 Set the size of the socket send buffer.
int sendwait (unsigned size)
 Set the size to wait before sending.
bool setccid (uint8_t ccid)
 Set ccid of dccp socket.
void shutdown (void)
 Shutdown the socket communication channel.
 Socket ()
 Create a socket object for use.
 Socket (Socket &existing)
 Create socket as duped handle of existing socket.
 Socket (socket_t socket)
 Create socket from existing socket descriptor.
 Socket (struct addrinfo *address)
 Create and connect a socket to an address from an address list.
 Socket (int family, int type, int protocol=0)
 Create an unbound socket of a specific type.
 Socket (char *address, char *port, int family=AF_UNSPEC, int type=0, int protocol=0)
 Create a bound socket.
int tos (int type)
 Set the type of service field of outgoing packets.
int ttl (unsigned char time)
 Set the time to live before packets expire.
int wait (timeout_t timeout=Timer::inf)
 Socket i/o timer setting.
bool waitPending (timeout_t timeout=0)
 Test for pending input data.
bool waitSending (timeout_t timeout=0)
 Test for output data sent.
size_t writes (char *string)
 Write a null terminated string to the socket.
size_t writeto (void *data, size_t number, struct sockaddr *address=((void *) 0))
 Write data to the socket send buffer.
virtual ~Socket ()
 Shutdown, close, and destroy socket.
- Static Protected Member Functions inherited from ucommon::Socket
static socket_t acceptfrom (socket_t socket, struct sockaddr_storage *address=((void *) 0))
 Accept a socket connection from a remote host.
static Socket acceptfrom (Socket &socket, struct sockaddr_storage *address)
 Accept connection through socket.
static int bindto (socket_t socket, char *address, char *service, int protocol=0)
 Bind the socket descriptor to a known interface and service port.
static int bindto (socket_t socket, struct sockaddr *address)
 Bind the socket descriptor to a known interface.
static int blocking (socket_t socket, bool enable)
 Set socket blocking I/O mode of socket descriptor.
static int broadcast (socket_t socket, bool enable)
 Set socket for unicast mode broadcasts on socket descriptor.
static void cancel (socket_t socket)
 Cancel pending i/o by shutting down the socket.
static void clear (set_t mask)
 Clear a mask, setting all entries to zero.
static void clear (socket_t socket, set_t mask)
 Clear a socket entry in a mask.
static int connectto (socket_t socket, struct addrinfo *list)
 Connect socket descriptor to a remote host from an address list.
static void connectto (Socket &socket, Socket::address &address)
 Connect a socket.
static unsigned copy (struct sockaddr *target, struct sockaddr *origin)
 Copy a socket address.
static socket_t create (int family, int type, int protocol)
 Create a socket object unbound.
static socket_t create (struct addrinfo *address, int type, int protocol)
 Create a connected socket.
static socket_t create (char *iface, char *service, int family=AF_UNSPEC, int type=0, int protocol=0)
 Create a bound socket for a service.
static socket_t create (Socket::address &address)
 Create a connected socket for a service.
static int disconnect (socket_t socket)
 Disconnect a connected socket descriptor.
static void disconnect (Socket &socket)
 Disconnect a connected socket.
static int drop (socket_t socket, struct addrinfo *list)
 Drop socket descriptor from multicast group.
static bool equal (struct sockaddr *address1, struct sockaddr *address2)
 Compare socket addresses.
static bool equalfrom (struct sockaddr_storage *address1, struct sockaddr_storage *address2)
 Compare socket addresses.
static bool equalhost (struct sockaddr *address1, struct sockaddr *address2)
 Compare socket host addresses.
static bool equalinet (struct sockaddr_internet *address1, struct sockaddr_internet *address2)
 Compare socket addresses.
static int error (socket_t socket)
 Get socket error code of socket descriptor.
static int error (void)
 Return error code of last socket operation,.
static void family (int query)
 Set default socket family preference for query options when the socket type is otherwise not specified.
static socklen_t getaddr (socket_t socket, struct sockaddr_storage *address, char *hostname, char *service)
 Lookup a host name and service address based on the addressing family and socket type of a socket descriptor.
static struct addrinfogetaddress (char *host, char *service, int type=SOCK_STREAM, int protocol=0)
 Get an address list directly.
static char * getaddress (struct sockaddr *address, char *buffer, socklen_t size)
 Get the hostname of a socket address.
static int getfamily (socket_t socket)
 Get the address family of the socket descriptor.
static int getfamily (struct sockaddr_storage &address)
 Get the address family of a socket address object.
static int getfamily (struct sockaddr_internet &address)
 Get the address family of an internet socket address object.
static struct addrinfogethint (socket_t socket, struct addrinfo *hint)
 Create an address info lookup hint based on the family and type properties of a socket descriptor.
static char * gethostname (struct sockaddr *address, char *buffer, size_t size)
 Lookup and return the host name associated with a socket address.
static int getinterface (struct sockaddr *address, struct sockaddr *destination)
 Get the socket address of the interface needed to reach a destination address.
static socklen_t getlen (struct sockaddr *address)
 Get the size of a socket address.
static int getlocal (socket_t socket, struct sockaddr_storage *address)
 Get local address to which the socket is bound.
static set_t getmask (void)
 Get a mask from the heap.
static int getremote (socket_t socket, struct sockaddr_storage *address)
 Get remote address to which the socket is connected.
static short getservice (struct sockaddr *address)
 Get the service port of a socket.
static int gettype (socket_t socket)
 Get the type of a socket.
static short inetservice (struct sockaddr_internet *address)
 Get the service port of an inet socket.
static void init (void)
 Initialize socket subsystem.
static void init (char *program)
 Initialize with program name.
static bool isNull (char *string)
 Simple function to validate that a given IP address string is a "zero" address.
static bool isNumeric (char *string)
 Simple function to validate that a given IP address string is a numeric address.
static int join (socket_t socket, struct addrinfo *list)
 Join socket descriptor to multicast group.
static int keepalive (socket_t socket, bool enable)
 Set socket for keepalive packets for socket descriptor.
static unsigned keyhost (struct sockaddr *address, unsigned size)
 Convert a socket host address into a hash map index.
static unsigned keyindex (struct sockaddr *address, unsigned size)
 Convert a socket address and service into a hash map index.
static int listento (socket_t socket, struct sockaddr *address, int backlog=5)
 Bind the socket descriptor to a known interface listen on service port.
static int loopback (socket_t socket, bool enable)
 Set loopback to read multicast packets socket descriptor broadcasts.
static int multicast (socket_t socket, unsigned ttl=1)
 Set multicast mode and multicast broadcast range for socket descriptor.
static int nodelay (socket_t socket)
 Set tcp nodelay option on socket descriptor.
static unsigned pending (socket_t socket)
 Get the number of bytes pending in the receive buffer of a socket descriptor.
static ssize_t printf (socket_t socket, char *format,...)
 Print formatted string to socket.
static int priority (socket_t socket, int scheduling)
 Set packet priority of socket descriptor.
static size_t readfrom (Socket &socket, char *buffer, size_t size, struct sockaddr_storage *address)
 receive from socket object.
static ssize_t readline (socket_t socket, char *data, size_t size, timeout_t timeout=Timer::inf)
 Read a newline of text data from the socket and save in NULL terminated string.
static ssize_t recvfrom (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_storage *address=((void *) 0))
 Get data waiting in receive queue.
static ssize_t recvinet (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_internet *address=((void *) 0))
 Get internet data waiting in receive queue.
static int recvsize (socket_t socket, unsigned size)
 Set the receive size of a socket descriptor.
static void release (struct addrinfo *list)
 Release an address list directly.
static void release (socket_t socket)
 Release (close) a socket.
static void release (set_t mask)
 Release a heap allocated mask.
static ssize_t replyto (socket_t socket, void *buffer, size_t size, int flags, struct sockaddr_storage *address)
 Send reply on socket.
static unsigned segsize (socket_t socket, unsigned size=0)
 Set segment size and get MTU.
static int select (int max, set_t read, set_t write, set_t error)
 Select without timeout.
static int select (int max, set_t read, set_t write, set_t error, timeout_t timeout)
 Select with timeout.
static ssize_t sendinet (socket_t socket, void *buffer, size_t size, int flags, struct sockaddr_internet *address)
 Send to internet socket.
static int sendsize (socket_t socket, unsigned size)
 Set the send size of a socket descriptor.
static ssize_t sendto (socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr *address=((void *) 0))
 Send data on socket.
static int sendwait (socket_t socket, unsigned size)
 Set the size to wait before sending.
static void set (socket_t socket, set_t mask)
 Set a socket entry in a mask.
static bool setccid (socket_t socket, uint8_t ccid)
 Set congestion control id.
static unsigned store (struct sockaddr_storage *storage, struct sockaddr *address)
 Store an address into an address object.
static unsigned store (struct sockaddr_internet *storage, struct sockaddr *address)
 Store an address into an internet address object.
static bool subnet (struct sockaddr *address1, struct sockaddr *address2)
 See if both addresses are in the same subnet.
static bool test (socket_t socket, set_t mask)
 Test a socket entry in a mask.
static int tos (socket_t socket, int type)
 Set type of service of socket descriptor.
static int ttl (socket_t socket, unsigned char time)
 Set the time to live for the socket descriptor.
static void v4mapping (bool enable)
 Set the default socket behavior for v6-v4 mapping.
static bool wait (socket_t socket, timeout_t timeout=0)
 Test for pending input data.
static size_t writeto (Socket &socket, char *buffer, size_t size, struct sockaddr *address)
 Send to socket object.
- Static Protected Attributes inherited from ucommon::Socket
static size_t masksize

Detailed Description

A bound socket used to listen for inbound socket connections.

This class is commonly used for TCP and DCCP listener sockets.

Author:
David Sugar dyfet.nosp@m.@gnu.nosp@m.telep.nosp@m.hony.nosp@m..org

Definition at line 1660 of file socket.h.


Constructor & Destructor Documentation

ucommon::ListenSocket::ListenSocket ( char *  address,
char *  service,
unsigned  backlog = 5,
int  family = AF_UNSPEC,
int  type = 0,
int  protocol = 0 
)

Create and bind a listener socket.

Parameters:
addressto bind on or "*" for all.
serviceport to bind listener.
backlogsize for buffering pending connections.
familyof socket.
typeof socket.
protocolfor socket if not TCPIP.

Member Function Documentation

socket_t ucommon::ListenSocket::accept ( struct sockaddr_storage *  address = ((void *) 0))

Accept a socket connection.

Parameters:
addressto save peer connecting.
Returns:
socket descriptor of connected socket.
static socket_t ucommon::ListenSocket::create ( char *  address,
char *  service,
unsigned  backlog = 5,
int  family = AF_UNSPEC,
int  type = 0,
int  protocol = 0 
)
static

Create a listen socket directly.

Parameters:
addressto bind on or "*" for all.
serviceport to bind listener.
backlogsize for buffering pending connections.
familyof socket.
typeof socket.
protocolfor socket if not TCPIP.
Returns:
bound and listened to socket.
socket_t ucommon::ListenSocket::getsocket ( void  )
inline

Get the socket descriptor of the listener.

Returns:
socket descriptor.

Definition at line 1719 of file socket.h.

ucommon::ListenSocket::operator socket_t ( )
inline

Get the socket descriptor of the listener.

Returns:
socket descriptor.

Reimplemented from ucommon::Socket.

Definition at line 1705 of file socket.h.

socket_t ucommon::ListenSocket::operator* ( )
inline

Get the socket descriptor of the listener by pointer reference.

Returns:
socket descriptor.

Reimplemented from ucommon::Socket.

Definition at line 1712 of file socket.h.

bool ucommon::ListenSocket::waitConnection ( timeout_t  timeout = Timer::inf)
inline

Wait for a pending connection.

Parameters:
timeoutto wait.
Returns:
true when acceptable connection is pending.

Definition at line 1698 of file socket.h.


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