# TCPSocket

<a id="tcpsocket"></a>

# TCPSocket

```cpp
#include <icy/net/tcpsocket.h>

class TCPSocket
```

[Defined in src/net/include/icy/net/tcpsocket.h:30](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L30)

> **Inherits:** [`Stream< uv_tcp_t >`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream), [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1)
> **Subclassed by:** [`SSLSocket`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#sslsocket)

TCP socket implementation.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`AcceptConnection`](#acceptconnection-1) | `variable` | Declared here |
| [`TCPSocket`](#tcpsocket-1) | `function` | Declared here |
| [`~TCPSocket`](#tcpsocket-2) | `function` | Declared here |
| [`TCPSocket`](#tcpsocket-3) | `function` | Declared here |
| [`operator=`](#operator-189) | `function` | Declared here |
| [`TCPSocket`](#tcpsocket-4) | `function` | Declared here |
| [`operator=`](#operator-190) | `function` | Declared here |
| [`shutdown`](#shutdown-7) | `function` | Declared here |
| [`close`](#close-22) | `function` | Declared here |
| [`connect`](#connect-7) | `function` | Declared here |
| [`connect`](#connect-8) | `function` | Declared here |
| [`send`](#send-5) | `function` | Declared here |
| [`sendOwned`](#sendowned-6) | `function` | Declared here |
| [`send`](#send-6) | `function` | Declared here |
| [`sendOwned`](#sendowned-7) | `function` | Declared here |
| [`bind`](#bind-2) | `function` | Declared here |
| [`listen`](#listen-2) | `function` | Declared here |
| [`acceptConnection`](#acceptconnection-2) | `function` | Declared here |
| [`setReusePort`](#setreuseport) | `function` | Declared here |
| [`setNoDelay`](#setnodelay) | `function` | Declared here |
| [`setKeepAlive`](#setkeepalive) | `function` | Declared here |
| [`setSimultaneousAccepts`](#setsimultaneousaccepts) | `function` | Declared here |
| [`setMode`](#setmode) | `function` | Declared here |
| [`mode`](#mode) | `function` | Declared here |
| [`setError`](#seterror-3) | `function` | Declared here |
| [`error`](#error-14) | `function` | Declared here |
| [`closed`](#closed-4) | `function` | Declared here |
| [`address`](#address-9) | `function` | Declared here |
| [`peerAddress`](#peeraddress-2) | `function` | Declared here |
| [`transport`](#transport-2) | `function` | Declared here |
| [`loop`](#loop-5) | `function` | Declared here |
| [`onConnect`](#onconnect-1) | `function` | Declared here |
| [`onRead`](#onread-2) | `function` | Declared here |
| [`onRecv`](#onrecv) | `function` | Declared here |
| [`onError`](#onerror-1) | `function` | Declared here |
| [`onClose`](#onclose-1) | `function` | Declared here |
| [`_mode`](#_mode-1) | `variable` | Declared here |
| [`_peerAddress`](#_peeraddress) | `variable` | Declared here |
| [`_peerAddressCached`](#_peeraddresscached) | `variable` | Declared here |
| [`init`](#init-11) | `function` | Declared here |
| [`reset`](#reset-14) | `function` | Declared here |
| [`Ptr`](#ptr-14) | `typedef` | Declared here |
| [`Vec`](#vec-2) | `typedef` | Declared here |
| [`Read`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#read-3) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-1) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`~Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-2) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#close-5) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#shutdown) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-16) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`writeOwned`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#writeowned) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`setHighWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#sethighwatermark) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-17) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-3) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_buffer`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_buffer-1) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_started`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_started-1) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_highWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_highwatermark) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_writeReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_writereqfree) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`_ownedWriteReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_ownedwritereqfree) | `variable` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`readStart`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstart-1) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`readStop`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstop) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`onRead`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#onread) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`allocWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocwritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`freeWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freewritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`allocOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocownedwritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`freeOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freeownedwritereq) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`canQueueWrite`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#canqueuewrite) | `function` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#handle-1) | `typedef` | Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-7) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`~Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-8) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`init`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invoke) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`invokeOrThrow`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invokeorthrow) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#close-18) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`ref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#ref) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`unref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#unref) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`initialized`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#initialized-1) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`active`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#active-3) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`closing`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closing-1) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`closed`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closed-2) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#error-11) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setUVError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setuverror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setAndThrowError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setandthrowerror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`throwLastError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#throwlasterror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#loop-3) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`reset`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#reset-12) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`get`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#get-15) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#tid-2) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#context-5) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`rawPtr`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#rawptr) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`setCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setclosecleanup) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`clearCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#clearclosecleanup) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`assertThread`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#assertthread) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_loop) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_context-1) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_tid) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`_error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_error-3) | `variable` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`onError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onerror) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onclose) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-9) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-171) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-10) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-172) | `function` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`Type`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#type-10) | `typedef` | Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6) |
| [`opaque`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#opaque-2) | `variable` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-2) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`~Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-4) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-178) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-5) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-179) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-2) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`bind`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#bind) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`listen`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#listen) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#shutdown-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned-1) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#close-19) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`address`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#address-8) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#peeraddress-1) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`transport`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#transport) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`setError`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#seterror-2) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`error`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#error-12) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`closed`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#closed-3) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`loop`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#loop-4) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`_af`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#_af) | `variable` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`init`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#init-10) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`reset`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#reset-13) | `function` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#ptr-9) | `typedef` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`Vec`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#vec) | `typedef` | Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1) |
| [`priority`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#priority-3) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`~SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-3) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-2) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`setSender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#setsender) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sender) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`addReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#addreceiver) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`removeReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#removereceiver) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`hasReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#hasreceiver) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#receivers) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketconnect) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketrecv-1) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketerror) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketclose) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_sender) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_receivers) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_dirty`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dirty) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`_dispatchDepth`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dispatchdepth) | `variable` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |
| [`cleanupReceivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#cleanupreceivers) | `function` | Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) |

## Inherited from [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`Read`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#read-3)  | Emitted when data has been received from the peer. |
| `function` | [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-1) `inline` | Construct the stream bound to `loop` with a 64 KiB read buffer. |
| `function` | [`~Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-2) `virtual` `inline` | Destroy the stream, stopping reads and freeing pooled write requests. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#close-5) `virtual` `inline` `override` | Closes and resets the stream handle. This will close the active socket/pipe and destroy the handle. |
| `function` | [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#shutdown) `inline` | Send a TCP/pipe shutdown request to the connected peer. |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-16) `inline` | Write `len` bytes from `data` to the stream. |
| `function` | [`writeOwned`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#writeowned) `inline` | Write an owned payload buffer to the stream. |
| `function` | [`setHighWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#sethighwatermark) `inline` | Set the high water mark for the write queue (default 16MB). When the write queue exceeds this size, [write()](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-16) returns false. |
| `function` | [`write`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#write-17) `inline` | Write `len` bytes from `data` together with a stream handle over an IPC pipe (uses `uv_write2`). |
| `function` | [`stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream-3) `inline` | Return the underlying `uv_stream_t` pointer cast from the native handle. |
| `variable` | [`_buffer`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_buffer-1)  |  |
| `variable` | [`_started`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_started-1)  |  |
| `variable` | [`_highWaterMark`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_highwatermark)  | 16MB default write queue limit |
| `variable` | [`_writeReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_writereqfree)  | Freelist for write requests. |
| `variable` | [`_ownedWriteReqFree`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#_ownedwritereqfree)  | Freelist for owned write requests. |
| `function` | [`readStart`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstart-1) `virtual` `inline` | Begin reading from the stream by registering libuv read callbacks. |
| `function` | [`readStop`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#readstop) `virtual` `inline` | Stop reading from the stream. |
| `function` | [`onRead`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#onread) `virtual` `inline` | Called by `handleRead` when `len` bytes of `data` arrive. |
| `function` | [`allocWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocwritereq) `inline` | Return a `uv_write_t` from the freelist, or allocate a new one if the pool is empty. |
| `function` | [`freeWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freewritereq) `inline` | Return `req` to the freelist, or delete it if the pool is at capacity. |
| `function` | [`allocOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#allocownedwritereq) `inline` |  |
| `function` | [`freeOwnedWriteReq`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#freeownedwritereq) `inline` |  |
| `function` | [`canQueueWrite`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#canqueuewrite) `inline` |  |
| `typedef` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#handle-1)  |  |

## Inherited from [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-7) `inline` | Construct the handle bound to the given event loop. |
| `function` | [`~Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-8) `virtual` `inline` |  |
| `function` | [`init`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8) `inline` | Initialize the underlying libuv handle by calling `f` with the loop, the raw handle pointer, and any additional `args`. |
| `function` | [`invoke`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invoke) `inline` | Invoke a libuv function `f` with `args` on the initialized handle. |
| `function` | [`invokeOrThrow`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#invokeorthrow) `inline` | Invoke a libuv function `f` with `args`, throwing on failure. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#close-18) `virtual` `inline` | Close and destroy the handle. |
| `function` | [`ref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#ref) `inline` | Re-reference the handle with the event loop after a previous [`unref()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#unref). |
| `function` | [`unref`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#unref) `inline` | Unreference the handle from the event loop. |
| `function` | [`initialized`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#initialized-1) `const` `inline` | Return `true` if the handle has been successfully initialized via [`init()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8). |
| `function` | [`active`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#active-3) `virtual` `const` `inline` | Return `true` when the handle is active (libuv `uv_is_active`). |
| `function` | [`closing`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closing-1) `virtual` `const` `inline` | Return `true` if `uv_close` has been called and the handle is awaiting its close callback (libuv `uv_is_closing`). |
| `function` | [`closed`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closed-2) `virtual` `const` `inline` | Return `true` if the handle has been fully closed (context released). |
| `function` | [`error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#error-11) `const` `inline` | Return the last error set on this handle, or a default-constructed [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) if no error has occurred. |
| `function` | [`setError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1) `virtual` `inline` | Set the error state and invoke [`onError()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onerror). |
| `function` | [`setUVError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setuverror) `inline` | Translate a libuv error code into an [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) and call [`setError()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1). |
| `function` | [`setAndThrowError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setandthrowerror) `inline` | Set the error state from a libuv error code and throw a `std::runtime_error`. |
| `function` | [`throwLastError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#throwlasterror) `inline` | Throw a `std::runtime_error` if the handle currently holds an error. |
| `function` | [`loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#loop-3) `const` `inline` | Return the event loop this handle is bound to. |
| `function` | [`reset`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#reset-12) `inline` | Close the current handle (if open) and allocate a fresh [`Context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Context.md#context-2), leaving the handle ready to be re-initialized via [`init()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#init-8). |
| `function` | [`get`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#get-15) `const` `inline` | Return the raw libuv handle pointer cast to [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6). |
| `function` | [`tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#tid-2) `const` `inline` | Return the ID of the thread that constructed this handle. |
| `function` | [`context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#context-5) `const` `inline` | Return the raw [`Context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Context.md#context-2) that owns the libuv handle memory. |
| `function` | [`rawPtr`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#rawptr) `const` `inline` | Return the raw libuv handle pointer without retaining the [`Context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Context.md#context-2). |
| `function` | [`setCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setclosecleanup) `inline` |  |
| `function` | [`clearCloseCleanup`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#clearclosecleanup) `inline` |  |
| `function` | [`assertThread`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#assertthread) `const` `inline` | Throw `std::logic_error` if called from any thread other than the thread that constructed this handle. |
| `variable` | [`_loop`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_loop)  |  |
| `variable` | [`_context`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_context-1)  |  |
| `variable` | [`_tid`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_tid)  |  |
| `variable` | [`_error`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#_error-3)  |  |
| `function` | [`onError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onerror) `virtual` `inline` | Called by [`setError()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1) after the error state has been updated. |
| `function` | [`onClose`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onclose) `virtual` `inline` | Called by [`close()`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#close-18) after the context has been released. |
| `function` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-9)  | NonCopyable and NonMovable. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-171)  | Deleted assignment operator. |
| `function` | [`Handle`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-10)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#operator-172)  | Deleted assignment operator. |
| `typedef` | [`Type`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#type-10)  | Define the native handle type. |

## Inherited from [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`opaque`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#opaque-2)  | Optional client data. |
| `function` | [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-2)  | Defaulted constructor. |
| `function` | [`~Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-3) `virtual` `noexcept` | Defaulted destructor. |
| `function` | [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-178)  | Deleted assignment operator. |
| `function` | [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-5)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#operator-179)  | Deleted assignment operator. |
| `function` | [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-2) `virtual` | Connects to the given peer IP address. |
| `function` | [`connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-3) `virtual` | Resolves and connects to the given host address. |
| `function` | [`bind`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#bind) `virtual` | Bind a local address to the socket. The address may be IPv4 or IPv6 (if supported). |
| `function` | [`listen`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#listen) `virtual` `inline` | Listens the socket on the given address. |
| `function` | [`shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#shutdown-3) `virtual` `inline` | Sends the shutdown packet which should result is socket closure via callback. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned) `virtual` | Sends an owned payload buffer to the connected peer. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned-1) `virtual` |  |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#close-19) `virtual` | Closes the underlying socket. |
| `function` | [`address`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#address-8) `virtual` `const` | The locally bound address. |
| `function` | [`peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#peeraddress-1) `virtual` `const` | The connected peer address. |
| `function` | [`transport`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#transport) `virtual` `const` | The transport protocol: TCP, UDP or SSLTCP. |
| `function` | [`setError`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#seterror-2) `virtual` | Sets the socket error. |
| `function` | [`error`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#error-12) `virtual` `const` | Return the socket error if any. |
| `function` | [`closed`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#closed-3) `virtual` `const` | Returns true if the native socket handle is closed. |
| `function` | [`loop`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#loop-4) `virtual` `const` | Returns the socket event loop. |
| `variable` | [`_af`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#_af)  |  |
| `function` | [`init`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#init-10) `virtual` | Initializes the underlying socket context. |
| `function` | [`reset`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#reset-13) `virtual` | Resets the socket context for reuse. |
| `typedef` | [`Ptr`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#ptr-9)  |  |
| `typedef` | [`Vec`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#vec)  |  |

## Inherited from [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`priority`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#priority-3)  | The priority of this adapter for STL sort operations. |
| `function` | [`SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-1)  | Creates the [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter). |
| `function` | [`~SocketAdapter`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter-2) `virtual` `noexcept` | Destroys the [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter). |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-1) `virtual` | Sends the given data buffer to the connected peer. Returns the number of bytes sent or -1 on error. No exception will be thrown. For TCP sockets the given peer address must match the connected peer address. |
| `function` | [`send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-2) `virtual` |  |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-2) `virtual` | Sends an owned payload buffer to the connected peer. |
| `function` | [`sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendowned-3) `virtual` |  |
| `function` | [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket) `virtual` | Sends the given packet to the connected peer. Returns the number of bytes sent or -1 on error. No exception will be thrown. For TCP sockets the given peer address must match the connected peer address. |
| `function` | [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-1) `virtual` |  |
| `function` | [`sendPacket`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sendpacket-2) `virtual` | Sends the given packet to the connected peer. This method provides delegate compatibility, and unlike other send methods throws an exception if the underlying socket is closed. |
| `function` | [`setSender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#setsender) `virtual` | Sets the pointer to the outgoing data adapter. Send methods proxy data to this adapter by default. |
| `function` | [`sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#sender)  | Returns the output [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) pointer. |
| `function` | [`addReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#addreceiver) `virtual` | Sets the pointer to the incoming data adapter. Events proxy data to this adapter by default. |
| `function` | [`removeReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#removereceiver) `virtual` | Remove the given receiver. |
| `function` | [`hasReceiver`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#hasreceiver) `virtual` | Returns true if the given receiver is connected. |
| `function` | [`receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#receivers)  | Returns all currently registered input [SocketAdapter](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#socketadapter) pointers. Dead (removed) entries are excluded from the returned list. |
| `function` | [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketconnect) `virtual` | Called when the socket establishes a connection. Forwards the event to all registered receivers in priority order. Override to intercept before the application sees the event. |
| `function` | [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketrecv-1) `virtual` | Called when data is received from the socket. Forwards the event to all registered receivers in priority order. |
| `function` | [`onSocketError`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketerror) `virtual` | Called when the socket encounters an error. Forwards the event to all registered receivers in priority order. |
| `function` | [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#onsocketclose) `virtual` | Called when the socket is closed. Forwards the event to all registered receivers in priority order. |
| `variable` | [`_sender`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_sender)  |  |
| `variable` | [`_receivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_receivers)  |  |
| `variable` | [`_dirty`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dirty)  |  |
| `variable` | [`_dispatchDepth`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#_dispatchdepth)  |  |
| `function` | [`cleanupReceivers`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#cleanupreceivers) `virtual` |  |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`LocalSignal`](https://auscaster.com/icey/docs/api-reference/base.md#localsignal)< void(const [`net::TCPSocket::Ptr`](#ptr-14) &)> | [`AcceptConnection`](#acceptconnection-1)  | Fired when a new client connection is accepted; carries a shared_ptr to the new socket. |

---

<a id="acceptconnection-1"></a>

### AcceptConnection

```cpp
LocalSignal< void(const net::TCPSocket::Ptr &)> AcceptConnection
```

Type: [`LocalSignal`](https://auscaster.com/icey/docs/api-reference/base.md#localsignal)< void(const [`net::TCPSocket::Ptr`](#ptr-14) &)>

[Defined in src/net/include/icy/net/tcpsocket.h:149](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L149)

Fired when a new client connection is accepted; carries a shared_ptr to the new socket.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`TCPSocket`](#tcpsocket-1)  | Constructs the [TCPSocket](#tcpsocket) and initializes the underlying libuv handle. |
|  | [`~TCPSocket`](#tcpsocket-2) `virtual` `noexcept` |  |
|  | [`TCPSocket`](#tcpsocket-3)  | Deleted constructor. |
| [`TCPSocket`](#tcpsocket) & | [`operator=`](#operator-189)  | Deleted assignment operator. |
|  | [`TCPSocket`](#tcpsocket-4)  | Deleted constructor. |
| [`TCPSocket`](#tcpsocket) & | [`operator=`](#operator-190)  | Deleted assignment operator. |
| `bool` | [`shutdown`](#shutdown-7) `virtual` `override` | Sends a TCP shutdown request; the socket closes after the peer acknowledges. |
| `void` | [`close`](#close-22) `virtual` `override` | Closes the socket immediately, releasing all associated resources. |
| `void` | [`connect`](#connect-7) `virtual` `override` | Connects to `peerAddress` using a libuv connect request. On success, calls [onConnect()](#onconnect-1); on failure, calls [setUVError()](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setuverror). |
| `void` | [`connect`](#connect-8) `virtual` `override` | Resolves `host` via DNS (or maps "localhost"), then connects. |
| `ssize_t` | [`send`](#send-5) `virtual` `override` | Writes `len` bytes to the connected peer. |
| `ssize_t` | [`sendOwned`](#sendowned-6) `virtual` `override` | Sends an owned payload buffer to the connected peer. |
| `ssize_t` | [`send`](#send-6) `virtual` `override` | Writes `len` bytes; `peerAddress` is ignored for TCP (connected stream). |
| `ssize_t` | [`sendOwned`](#sendowned-7) `virtual` `override` |  |
| `void` | [`bind`](#bind-2) `virtual` `override` | Binds the socket to `address`. Resets and reinitializes the handle if the address family changes. |
| `void` | [`listen`](#listen-2) `virtual` `override` | Starts listening for incoming connections with the given backlog. |
| `void` | [`acceptConnection`](#acceptconnection-2) `virtual` | Accepts the next pending client connection and fires AcceptConnection. |
| `bool` | [`setReusePort`](#setreuseport)  | Enables SO_REUSEPORT on Linux kernel >= 3.9 for multi-thread load balancing. Must be called after [bind()](#bind-2). No-op and returns false on unsupported platforms. |
| `bool` | [`setNoDelay`](#setnodelay)  | Enables or disables TCP_NODELAY (Nagle's algorithm). |
| `bool` | [`setKeepAlive`](#setkeepalive)  | Enables or disables TCP keep-alive probes. |
| `bool` | [`setSimultaneousAccepts`](#setsimultaneousaccepts)  | Enables or disables simultaneous accepts on Windows. No-op and returns false on non-Windows platforms. |
| `void` | [`setMode`](#setmode)  | Sets the socket mode (ServerSide or ClientSide). |
| [`SocketMode`](https://auscaster.com/icey/docs/api-reference/icy-net.md#socketmode) | [`mode`](#mode) `const` | Returns the current socket mode. |
| `void` | [`setError`](#seterror-3) `virtual` `override` | Sets the socket error; ignores the call if an error is already recorded. Setting an error causes the socket to close. |
| const [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) & | [`error`](#error-14) `virtual` `const` `override` | Returns the current socket error, if any. |
| `bool` | [`closed`](#closed-4) `virtual` `const` `override` | Returns true if the native socket handle is closed. |
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`address`](#address-9) `virtual` `const` `override` | Returns the IP address and port number of the socket. A wildcard address is returned if the socket is not connected. |
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`peerAddress`](#peeraddress-2) `virtual` `const` `override` | Returns the IP address and port number of the peer socket. A wildcard address is returned if the socket is not connected. |
| [`net::TransportType`](https://auscaster.com/icey/docs/api-reference/icy-net.md#transporttype) | [`transport`](#transport-2) `virtual` `const` `override` | Returns the TCP transport protocol. |
| [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | [`loop`](#loop-5) `virtual` `const` `override` | Returns the event loop associated with this socket. |
| `void` | [`onConnect`](#onconnect-1) `virtual` | Called by the stream layer when the TCP connection is established. |
| `void` | [`onRead`](#onread-2) `virtual` `override` | Called by the stream layer with raw received bytes; wraps them in a [MutableBuffer](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6). |
| `void` | [`onRecv`](#onrecv) `virtual` | Dispatches a received buffer to all socket adapters via onSocketRecv. |
| `void` | [`onError`](#onerror-1) `virtual` `override` | Dispatches the error to adapters and closes the socket. |
| `void` | [`onClose`](#onclose-1) `virtual` `override` | Dispatches the close event to all socket adapters. |

---

<a id="tcpsocket-1"></a>

### TCPSocket

```cpp
TCPSocket(uv::Loop * loop = uv::defaultLoop())
```

[Defined in src/net/include/icy/net/tcpsocket.h:39](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L39)

Constructs the [TCPSocket](#tcpsocket) and initializes the underlying libuv handle.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop to use; defaults to the default loop. |

---

<a id="tcpsocket-2"></a>

### ~TCPSocket

`virtual` `noexcept`

```cpp
virtual ~TCPSocket() noexcept
```

[Defined in src/net/include/icy/net/tcpsocket.h:40](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L40)

---

<a id="tcpsocket-3"></a>

### TCPSocket

```cpp
TCPSocket(const TCPSocket &) = delete
```

[Defined in src/net/include/icy/net/tcpsocket.h:42](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L42)

Deleted constructor.

---

<a id="operator-189"></a>

### operator=

```cpp
TCPSocket & operator=(const TCPSocket &) = delete
```

[Defined in src/net/include/icy/net/tcpsocket.h:43](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L43)

Deleted assignment operator.

---

<a id="tcpsocket-4"></a>

### TCPSocket

```cpp
TCPSocket(TCPSocket &&) = delete
```

[Defined in src/net/include/icy/net/tcpsocket.h:44](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L44)

Deleted constructor.

---

<a id="operator-190"></a>

### operator=

```cpp
TCPSocket & operator=(TCPSocket &&) = delete
```

[Defined in src/net/include/icy/net/tcpsocket.h:45](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L45)

Deleted assignment operator.

---

<a id="shutdown-7"></a>

### shutdown

`virtual` `override`

```cpp
virtual bool shutdown() override
```

[Defined in src/net/include/icy/net/tcpsocket.h:49](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L49)

Sends a TCP shutdown request; the socket closes after the peer acknowledges. 
#### Returns
true if the shutdown request was queued successfully.

#### Reimplements

- [`Socket::shutdown`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#shutdown-3)

---

<a id="close-22"></a>

### close

`virtual` `override`

```cpp
virtual void close() override
```

[Defined in src/net/include/icy/net/tcpsocket.h:52](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L52)

Closes the socket immediately, releasing all associated resources.

#### Reimplements

- [`Stream::close`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#close-5)

#### Reimplemented by

- [`SSLSocket::close`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#close-21)

---

<a id="connect-7"></a>

### connect

`virtual` `override`

```cpp
virtual void connect(const net::Address & peerAddress) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:57](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L57)

Connects to `peerAddress` using a libuv connect request. On success, calls [onConnect()](#onconnect-1); on failure, calls [setUVError()](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#setuverror).

#### Reimplements

- [`Socket::connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-2)

#### Reimplemented by

- [`SSLSocket::connect`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#connect-5)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `peerAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | The remote address to connect to. |

---

<a id="connect-8"></a>

### connect

`virtual` `override`

```cpp
virtual void connect(std::string_view host, uint16_t port) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:62](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L62)

Resolves `host` via DNS (or maps "localhost"), then connects.

#### Reimplements

- [`Socket::connect`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#connect-3)

#### Reimplemented by

- [`SSLSocket::connect`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#connect-6)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `host` | `std::string_view` | Hostname or IP address string. |
| `port` | `uint16_t` | Destination port. |

---

<a id="send-5"></a>

### send

`virtual` `override`

```cpp
virtual ssize_t send(const char * data, size_t len, int flags = 0) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:69](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L69)

Writes `len` bytes to the connected peer. 
#### Returns
Number of bytes sent, or -1 on error.

#### Reimplements

- [`SocketAdapter::send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-1)

#### Reimplemented by

- [`SSLSocket::send`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#send-3)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the data to send. |
| `len` | `size_t` | Number of bytes to send. |
| `flags` | `int` | Reserved; currently unused. |

---

<a id="sendowned-6"></a>

### sendOwned

`virtual` `override`

```cpp
virtual ssize_t sendOwned(Buffer && buffer, int flags = 0) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:70](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L70)

Sends an owned payload buffer to the connected peer.

#### Reimplements

- [`Socket::sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned)

#### Reimplemented by

- [`SSLSocket::sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#sendowned-4)

---

<a id="send-6"></a>

### send

`virtual` `override`

```cpp
virtual ssize_t send(const char * data, size_t len, const net::Address & peerAddress, int flags = 0) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:78](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L78)

Writes `len` bytes; `peerAddress` is ignored for TCP (connected stream). 
#### Returns
Number of bytes sent, or -1 on error.

#### Reimplements

- [`SocketAdapter::send`](https://auscaster.com/icey/docs/api-reference/icy-net-SocketAdapter.md#send-2)

#### Reimplemented by

- [`SSLSocket::send`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#send-4)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to the data to send. |
| `len` | `size_t` | Number of bytes to send. |
| `peerAddress` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Ignored; present for interface conformance. |
| `flags` | `int` | Reserved; currently unused. |

---

<a id="sendowned-7"></a>

### sendOwned

`virtual` `override`

```cpp
virtual ssize_t sendOwned(Buffer && buffer, const net::Address & peerAddress, int flags = 0) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:79](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L79)

#### Reimplements

- [`Socket::sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#sendowned-1)

#### Reimplemented by

- [`SSLSocket::sendOwned`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#sendowned-5)

---

<a id="bind-2"></a>

### bind

`virtual` `override`

```cpp
virtual void bind(const net::Address & address, unsigned flags = 0) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:85](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L85)

Binds the socket to `address`. Resets and reinitializes the handle if the address family changes.

#### Reimplements

- [`Socket::bind`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#bind)

#### Reimplemented by

- [`SSLSocket::bind`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#bind-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `address` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | Local address to bind to. |
| `flags` | `unsigned` | Optional bind flags (e.g. UV_TCP_IPV6ONLY is added automatically for IPv6). |

---

<a id="listen-2"></a>

### listen

`virtual` `override`

```cpp
virtual void listen(int backlog = 64) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:89](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L89)

Starts listening for incoming connections with the given backlog.

#### Reimplements

- [`Socket::listen`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#listen)

#### Reimplemented by

- [`SSLSocket::listen`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#listen-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `backlog` | `int` | Maximum length of the pending connection queue. |

---

<a id="acceptconnection-2"></a>

### acceptConnection

`virtual`

```cpp
virtual void acceptConnection()
```

[Defined in src/net/include/icy/net/tcpsocket.h:92](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L92)

Accepts the next pending client connection and fires AcceptConnection.

#### Reimplemented by

- [`SSLSocket::acceptConnection`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#acceptconnection)

---

<a id="setreuseport"></a>

### setReusePort

```cpp
bool setReusePort()
```

[Defined in src/net/include/icy/net/tcpsocket.h:97](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L97)

Enables SO_REUSEPORT on Linux kernel >= 3.9 for multi-thread load balancing. Must be called after [bind()](#bind-2). No-op and returns false on unsupported platforms. 
#### Returns
true if the socket option was set successfully.

---

<a id="setnodelay"></a>

### setNoDelay

```cpp
bool setNoDelay(bool enable)
```

[Defined in src/net/include/icy/net/tcpsocket.h:102](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L102)

Enables or disables TCP_NODELAY (Nagle's algorithm). 
#### Returns
true if the option was set successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `enable` | `bool` | true to disable Nagle's algorithm (lower latency). |

---

<a id="setkeepalive"></a>

### setKeepAlive

```cpp
bool setKeepAlive(bool enable, int delay)
```

[Defined in src/net/include/icy/net/tcpsocket.h:108](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L108)

Enables or disables TCP keep-alive probes. 
#### Returns
true if the option was set successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `enable` | `bool` | true to enable keep-alive. |
| `delay` | `int` | Initial delay in seconds before the first keep-alive probe. |

---

<a id="setsimultaneousaccepts"></a>

### setSimultaneousAccepts

```cpp
bool setSimultaneousAccepts(bool enable)
```

[Defined in src/net/include/icy/net/tcpsocket.h:114](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L114)

Enables or disables simultaneous accepts on Windows. No-op and returns false on non-Windows platforms. 
#### Returns
true if the option was set successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `enable` | `bool` | true to enable simultaneous accepts. |

---

<a id="setmode"></a>

### setMode

```cpp
void setMode(SocketMode mode)
```

[Defined in src/net/include/icy/net/tcpsocket.h:118](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L118)

Sets the socket mode (ServerSide or ClientSide).

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `mode` | [`SocketMode`](https://auscaster.com/icey/docs/api-reference/icy-net.md#socketmode) | The mode to assign. |

---

<a id="mode"></a>

### mode

`const`

```cpp
SocketMode mode() const
```

[Defined in src/net/include/icy/net/tcpsocket.h:121](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L121)

Returns the current socket mode.

---

<a id="seterror-3"></a>

### setError

`virtual` `override`

```cpp
virtual void setError(const icy::Error & err) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:126](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L126)

Sets the socket error; ignores the call if an error is already recorded. Setting an error causes the socket to close.

#### Reimplements

- [`Handle::setError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#seterror-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `err` | const [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) & | The error to record. |

---

<a id="error-14"></a>

### error

`virtual` `const` `override`

```cpp
virtual const icy::Error & error() const override
```

[Defined in src/net/include/icy/net/tcpsocket.h:129](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L129)

Returns the current socket error, if any.

#### Reimplements

- [`Socket::error`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#error-12)

---

<a id="closed-4"></a>

### closed

`virtual` `const` `override`

```cpp
virtual bool closed() const override
```

[Defined in src/net/include/icy/net/tcpsocket.h:132](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L132)

Returns true if the native socket handle is closed.

#### Reimplements

- [`Handle::closed`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#closed-2)

---

<a id="address-9"></a>

### address

`virtual` `const` `override`

```cpp
virtual net::Address address() const override
```

[Defined in src/net/include/icy/net/tcpsocket.h:136](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L136)

Returns the IP address and port number of the socket. A wildcard address is returned if the socket is not connected.

#### Reimplements

- [`Socket::address`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#address-8)

---

<a id="peeraddress-2"></a>

### peerAddress

`virtual` `const` `override`

```cpp
virtual net::Address peerAddress() const override
```

[Defined in src/net/include/icy/net/tcpsocket.h:140](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L140)

Returns the IP address and port number of the peer socket. A wildcard address is returned if the socket is not connected.

#### Reimplements

- [`Socket::peerAddress`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#peeraddress-1)

---

<a id="transport-2"></a>

### transport

`virtual` `const` `override`

```cpp
virtual net::TransportType transport() const override
```

[Defined in src/net/include/icy/net/tcpsocket.h:143](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L143)

Returns the TCP transport protocol.

#### Reimplements

- [`Socket::transport`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#transport)

---

<a id="loop-5"></a>

### loop

`virtual` `const` `override`

```cpp
virtual uv::Loop * loop() const override
```

[Defined in src/net/include/icy/net/tcpsocket.h:146](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L146)

Returns the event loop associated with this socket.

#### Reimplements

- [`Socket::loop`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#loop-4)

---

<a id="onconnect-1"></a>

### onConnect

`virtual`

```cpp
virtual void onConnect()
```

[Defined in src/net/include/icy/net/tcpsocket.h:153](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L153)

Called by the stream layer when the TCP connection is established.

#### Reimplemented by

- [`SSLSocket::onConnect`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#onconnect)

---

<a id="onread-2"></a>

### onRead

`virtual` `override`

```cpp
virtual void onRead(const char * data, size_t len) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:158](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L158)

Called by the stream layer with raw received bytes; wraps them in a [MutableBuffer](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6).

#### Reimplements

- [`Stream::onRead`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#onread)

#### Reimplemented by

- [`SSLSocket::onRead`](https://auscaster.com/icey/docs/api-reference/icy-net-SSLSocket.md#onread-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `const char *` | Pointer to received bytes. |
| `len` | `size_t` | Number of bytes received. |

---

<a id="onrecv"></a>

### onRecv

`virtual`

```cpp
virtual void onRecv(const MutableBuffer & buf)
```

[Defined in src/net/include/icy/net/tcpsocket.h:162](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L162)

Dispatches a received buffer to all socket adapters via onSocketRecv.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | const [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) & | The buffer containing the received data. |

---

<a id="onerror-1"></a>

### onError

`virtual` `override`

```cpp
virtual void onError(const icy::Error & error) override
```

[Defined in src/net/include/icy/net/tcpsocket.h:166](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L166)

Dispatches the error to adapters and closes the socket.

#### Reimplements

- [`Handle::onError`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onerror)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `error` | const [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) & | The error that occurred. |

---

<a id="onclose-1"></a>

### onClose

`virtual` `override`

```cpp
virtual void onClose() override
```

[Defined in src/net/include/icy/net/tcpsocket.h:169](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L169)

Dispatches the close event to all socket adapters.

#### Reimplements

- [`Handle::onClose`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#onclose)

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`SocketMode`](https://auscaster.com/icey/docs/api-reference/icy-net.md#socketmode) | [`_mode`](#_mode-1)  |  |
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`_peerAddress`](#_peeraddress)  | Cached peer address (avoids syscall per recv) |
| `bool` | [`_peerAddressCached`](#_peeraddresscached)  | True once _peerAddress is set at connect/accept. |

---

<a id="_mode-1"></a>

### _mode

```cpp
SocketMode _mode
```

Type: [`SocketMode`](https://auscaster.com/icey/docs/api-reference/icy-net.md#socketmode)

[Defined in src/net/include/icy/net/tcpsocket.h:175](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L175)

---

<a id="_peeraddress"></a>

### _peerAddress

```cpp
net::Address _peerAddress
```

Type: [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address)

[Defined in src/net/include/icy/net/tcpsocket.h:176](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L176)

Cached peer address (avoids syscall per recv)

---

<a id="_peeraddresscached"></a>

### _peerAddressCached

```cpp
bool _peerAddressCached = false
```

[Defined in src/net/include/icy/net/tcpsocket.h:177](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L177)

True once _peerAddress is set at connect/accept.

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`init`](#init-11) `virtual` `override` | Initializes the underlying socket context. |
| `void` | [`reset`](#reset-14) `virtual` `override` | Resets the socket context for reuse. |

---

<a id="init-11"></a>

### init

`virtual` `override`

```cpp
virtual void init() override
```

[Defined in src/net/include/icy/net/tcpsocket.h:172](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L172)

Initializes the underlying socket context.

#### Reimplements

- [`Socket::init`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#init-10)

---

<a id="reset-14"></a>

### reset

`virtual` `override`

```cpp
virtual void reset() override
```

[Defined in src/net/include/icy/net/tcpsocket.h:173](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L173)

Resets the socket context for reuse.

#### Reimplements

- [`Socket::reset`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#reset-13)

## Public Types

| Name | Description |
|------|-------------|
| [`Ptr`](#ptr-14)  |  |
| [`Vec`](#vec-2)  |  |

---

<a id="ptr-14"></a>

### Ptr

```cpp
using Ptr = std::shared_ptr< TCPSocket >
```

Type: std::shared_ptr< [`TCPSocket`](#tcpsocket) >

[Defined in src/net/include/icy/net/tcpsocket.h:34](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L34)

---

<a id="vec-2"></a>

### Vec

```cpp
using Vec = std::vector< Ptr >
```

Type: std::vector< [`Ptr`](#ptr-14) >

[Defined in src/net/include/icy/net/tcpsocket.h:35](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/tcpsocket.h#L35)
