---
name: "TCPSocket"
section: "3cc"
platform: "linux"
package: "libcommoncpp2-dev"
version: "1.0.13-5"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/TCPSocket/3cc"
---

# TCPSocket(3cc)

TCP sockets are used for stream based connected sessions between two sockets. bound server for TCP streams and sessions.

## NAME

TCPSocket - TCP sockets are used for stream based connected sessions between two sockets. bound server for TCP streams and sessions.

## SYNOPSIS

`#include <socket.h>`

Inherits **Socket**.

### Public Methods

**TCPSocket** (const **InetAddress** &bind, **tpport\_t** port, int backlog=5)\
 *A TCP 'server' is created as a TCP socket that is bound to a hardware address and port number on the local machine and that has a backlog queue to listen for remote connection requests.* **InetHostAddress** **getRequest** (**tpport\_t** \*port=NULL) const\
 *Return address and port of next connection request.* void **reject** (void)\
 *Used to reject the next incoming connection request.* **InetHostAddress** **getLocal** (**tpport\_t** \*port=NULL) const\
 *Used to get local bound address.* bool **isPendingConnection** (**timeout\_t** timeout=TIMEOUT\_INF)\
 *Used to wait for pending connection requests.* virtual **~TCPSocket** ()\
 *Use base socket handler for ending this socket.*

### Protected Methods

virtual bool **onAccept** (const **InetHostAddress** &ia, **tpport\_t** port)\
 *A method to call in a derived TCPSocket class that is acting as a server when a connection request is being accepted.*

### Friends

class **TCPStream**\
 class **SocketPort**\
 class **tcpstream**\

## DETAILED DESCRIPTION

TCP sockets are used for stream based connected sessions between two sockets. bound server for TCP streams and sessions.

Both error recovery and flow control operate transparently for a TCP socket connection. The TCP socket base class is primary used to bind a TCP 'server' for accepting TCP streams.

An implicit and unique TCPSocket object exists in Common C++ to represent a bound TCP socket acting as a 'server' for receiving connection requests. This class is not part of **TCPStream** because such objects normally perform no physical I/O (read or write operations) other than to specify a listen backlog queue and perform 'accept' operations for pending connections. The Common C++ TCPSocket offers a Peek method to examine where the next pending connection is coming from, and a Reject method to flush the next request from the queue without having to create a session.

The TCPSocket also supports a 'OnAccept' method which can be called when a **TCPStream** related object is created from a TCPSocket. By creating a **TCPStream** from a TCPSocket, an accept operation automatically occurs, and the TCPSocket can then still reject the client connection through the return status of it's OnAccept method.

**Author:**  David Sugar \<dyfet@tycho.com\>

## CONSTRUCTOR & DESTRUCTOR DOCUMENTATION

### TCPSocket::TCPSocket (const InetAddress & bind, tpport\_t port, int backlog = 5)

A TCP 'server' is created as a TCP socket that is bound to a hardware address and port number on the local machine and that has a backlog queue to listen for remote connection requests.

If the server cannot be created, an exception is thrown.

**Parameters:**

- *bind*

  *local ip address or interface to use.*

- *port*

  *number to bind socket under.*

- *backlog*

  *size of connection request queue.*

### virtual TCPSocket::~TCPSocket ()` [inline, virtual]`

*Use base socket handler for ending this socket.*

## MEMBER FUNCTION DOCUMENTATION

### InetHostAddress TCPSocket::getLocal (tpport\_t \* port = NULL) const` [inline]`

*Used to get local bound address.*

*Reimplemented from* **Socket***.*

### InetHostAddress TCPSocket::getRequest (tpport\_t \* port = NULL) const` [inline]`

*Return address and port of next connection request.*

*This can be used instead of OnAccept() to pre-evaluate connection requests.*

**Returns:**  *host requesting a connection.*

**Parameters:**

- *port*

  *number of requestor.*

### bool TCPSocket::isPendingConnection (timeout\_t timeout = TIMEOUT\_INF)` [inline]`

*Used to wait for pending connection requests.*

**Returns:**  *true if data packets available.*

**Parameters:**

- *timeout*

  *in milliseconds. TIMEOUT\_INF if not specified.*

### virtual bool TCPSocket::onAccept (const InetHostAddress & ia, tpport\_t port)` [inline, protected, virtual]`

*A method to call in a derived TCPSocket class that is acting as a server when a connection request is being accepted.*

*The server can implement protocol specific rules to exclude the remote socket from being accepted by returning false. The Peek method can also be used for this purpose.*

**Returns:**  *true if client should be accepted.*

**Parameters:**

- *ia*

  *internet host address of the client.*

- *port*

  *number of the client.*

### void TCPSocket::reject (void)

*Used to reject the next incoming connection request.*

## FRIENDS AND RELATED FUNCTION DOCUMENTATION

### friend class SocketPort` [friend]`

### friend class tcpstream` [friend]`

### friend class TCPStream` [friend]`

## AUTHOR

*Generated automatically by Doxygen for CommonC++ from the source code.*
