# UDPSocket

<a id="udpsocket"></a>

# UDPSocket

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

class UDPSocket
```

[Defined in src/net/include/icy/net/udpsocket.h:28](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L28)

> **Inherits:** [`Handle< uv_udp_t >`](https://auscaster.com/icey/docs/api-reference/icy-uv-Handle.md#handle-6), [`Socket`](https://auscaster.com/icey/docs/api-reference/icy-net-Socket.md#socket-1)

UDP socket implementation.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`UDPSocket`](#udpsocket-1) | `function` | Declared here |
| [`~UDPSocket`](#udpsocket-2) | `function` | Declared here |
| [`UDPSocket`](#udpsocket-3) | `function` | Declared here |
| [`operator=`](#operator-191) | `function` | Declared here |
| [`UDPSocket`](#udpsocket-4) | `function` | Declared here |
| [`operator=`](#operator-192) | `function` | Declared here |
| [`connect`](#connect-9) | `function` | Declared here |
| [`connect`](#connect-10) | `function` | Declared here |
| [`close`](#close-23) | `function` | Declared here |
| [`bind`](#bind-3) | `function` | Declared here |
| [`send`](#send-8) | `function` | Declared here |
| [`sendOwned`](#sendowned-8) | `function` | Declared here |
| [`send`](#send-9) | `function` | Declared here |
| [`sendOwned`](#sendowned-9) | `function` | Declared here |
| [`setBroadcast`](#setbroadcast) | `function` | Declared here |
| [`setMulticastLoop`](#setmulticastloop) | `function` | Declared here |
| [`setMulticastTTL`](#setmulticastttl) | `function` | Declared here |
| [`address`](#address-10) | `function` | Declared here |
| [`peerAddress`](#peeraddress-4) | `function` | Declared here |
| [`transport`](#transport-3) | `function` | Declared here |
| [`setError`](#seterror-4) | `function` | Declared here |
| [`error`](#error-15) | `function` | Declared here |
| [`closed`](#closed-5) | `function` | Declared here |
| [`loop`](#loop-6) | `function` | Declared here |
| [`onRecv`](#onrecv-1) | `function` | Declared here |
| [`_peer`](#_peer) | `variable` | Declared here |
| [`_buffer`](#_buffer-2) | `variable` | Declared here |
| [`init`](#init-12) | `function` | Declared here |
| [`reset`](#reset-15) | `function` | Declared here |
| [`onError`](#onerror-2) | `function` | Declared here |
| [`onClose`](#onclose-2) | `function` | Declared here |
| [`recvStart`](#recvstart) | `function` | Declared here |
| [`recvStop`](#recvstop) | `function` | Declared here |
| [`Ptr`](#ptr-15) | `typedef` | Declared here |
| [`Vec`](#vec-3) | `typedef` | Declared here |
| [`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 [`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 Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`UDPSocket`](#udpsocket-1)  | Constructs the [UDPSocket](#udpsocket) and initializes the underlying libuv handle. |
|  | [`~UDPSocket`](#udpsocket-2) `virtual` `noexcept` |  |
|  | [`UDPSocket`](#udpsocket-3)  | Deleted constructor. |
| [`UDPSocket`](#udpsocket) & | [`operator=`](#operator-191)  | Deleted assignment operator. |
|  | [`UDPSocket`](#udpsocket-4)  | Deleted constructor. |
| [`UDPSocket`](#udpsocket) & | [`operator=`](#operator-192)  | Deleted assignment operator. |
| `void` | [`connect`](#connect-9) `virtual` `override` | Records the peer address and fires the Connect signal to mimic TCP socket behaviour. UDP is connectionless; this call does not send any data. |
| `void` | [`connect`](#connect-10) `virtual` `override` | Resolves `host` via DNS (or maps "localhost"), then calls connect(Address). |
| `void` | [`close`](#close-23) `virtual` `override` | Stops receiving and closes the underlying UDP handle. |
| `void` | [`bind`](#bind-3) `virtual` `override` | Binds the socket to `address` and starts the receive loop. |
| `ssize_t` | [`send`](#send-8) `virtual` `override` | Sends `len` bytes to the previously connected peer address. Returns -1 if no peer address has been set. |
| `ssize_t` | [`sendOwned`](#sendowned-8) `virtual` `override` | Sends an owned payload buffer to the connected peer. |
| `ssize_t` | [`send`](#send-9) `virtual` `override` | Sends `len` bytes to `peerAddress`. Returns -1 if the socket is uninitialized or the address is not authorized. |
| `ssize_t` | [`sendOwned`](#sendowned-9) `virtual` `override` |  |
| `bool` | [`setBroadcast`](#setbroadcast)  | Enables or disables UDP broadcast. |
| `bool` | [`setMulticastLoop`](#setmulticastloop)  | Enables or disables IP multicast loopback. |
| `bool` | [`setMulticastTTL`](#setmulticastttl)  | Sets the IP multicast time-to-live (hop limit). |
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`address`](#address-10) `virtual` `const` `override` | Returns the locally bound address, or a wildcard address if unbound. |
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`peerAddress`](#peeraddress-4) `virtual` `const` `override` | Returns the connected peer address set by [connect()](#connect-9), or a wildcard address if unconnected. |
| [`net::TransportType`](https://auscaster.com/icey/docs/api-reference/icy-net.md#transporttype) | [`transport`](#transport-3) `virtual` `const` `override` | Returns the UDP transport protocol. |
| `void` | [`setError`](#seterror-4) `virtual` `override` | Sets the socket error and triggers close. |
| const [`icy::Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) & | [`error`](#error-15) `virtual` `const` `override` | Returns the current socket error, if any. |
| `bool` | [`closed`](#closed-5) `virtual` `const` `override` | Returns true if the native socket handle is closed. |
| [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | [`loop`](#loop-6) `virtual` `const` `override` | Returns the event loop associated with this socket. |
| `void` | [`onRecv`](#onrecv-1) `virtual` | Dispatches a received datagram to all socket adapters via onSocketRecv. |

---

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

### UDPSocket

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

[Defined in src/net/include/icy/net/udpsocket.h:37](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L37)

Constructs the [UDPSocket](#udpsocket) 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="udpsocket-2"></a>

### ~UDPSocket

`virtual` `noexcept`

```cpp
virtual ~UDPSocket() noexcept
```

[Defined in src/net/include/icy/net/udpsocket.h:38](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L38)

---

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

### UDPSocket

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

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

Deleted constructor.

---

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

### operator=

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

[Defined in src/net/include/icy/net/udpsocket.h:41](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L41)

Deleted assignment operator.

---

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

### UDPSocket

```cpp
UDPSocket(UDPSocket &&) = delete
```

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

Deleted constructor.

---

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

### operator=

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

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

Deleted assignment operator.

---

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

### connect

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:48](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L48)

Records the peer address and fires the Connect signal to mimic TCP socket behaviour. UDP is connectionless; this call does not send any data.

#### Reimplements

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

#### Parameters

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

---

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

### connect

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:53](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L53)

Resolves `host` via DNS (or maps "localhost"), then calls connect(Address).

#### Reimplements

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

#### Parameters

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

---

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

### close

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:56](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L56)

Stops receiving and closes the underlying UDP handle.

#### Reimplements

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

---

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

### bind

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:61](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L61)

Binds the socket to `address` and starts the receive loop.

#### Reimplements

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

#### 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 (UV_UDP_IPV6ONLY is added automatically for IPv6). |

---

<a id="send-8"></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/udpsocket.h:69](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L69)

Sends `len` bytes to the previously connected peer address. Returns -1 if no peer address has been set. 
#### Returns
Number of bytes accepted for sending, or -1 on error.

#### Reimplements

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

#### 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-8"></a>

### sendOwned

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:70](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.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)

---

<a id="send-9"></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/udpsocket.h:79](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L79)

Sends `len` bytes to `peerAddress`. Returns -1 if the socket is uninitialized or the address is not authorized. 
#### Returns
Number of bytes accepted for sending, or -1 on error.

#### Reimplements

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

#### 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) & | Destination address; must match the connected peer if one is set. |
| `flags` | `int` | Reserved; currently unused. |

---

<a id="sendowned-9"></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/udpsocket.h:81](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L81)

#### Reimplements

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

---

<a id="setbroadcast"></a>

### setBroadcast

```cpp
bool setBroadcast(bool flag)
```

[Defined in src/net/include/icy/net/udpsocket.h:87](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L87)

Enables or disables UDP broadcast. 
#### Returns
true if the option was set successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `flag` | `bool` | true to enable broadcast. |

---

<a id="setmulticastloop"></a>

### setMulticastLoop

```cpp
bool setMulticastLoop(bool flag)
```

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

Enables or disables IP multicast loopback. 
#### Returns
true if the option was set successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `flag` | `bool` | true to enable multicast loopback. |

---

<a id="setmulticastttl"></a>

### setMulticastTTL

```cpp
bool setMulticastTTL(int ttl)
```

[Defined in src/net/include/icy/net/udpsocket.h:98](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L98)

Sets the IP multicast time-to-live (hop limit). 
#### Returns
true if the option was set successfully.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `ttl` | `int` | Value in the range [1, 255]. |

#### Exceptions

| Exception | Description |
|-----------|-------------|
| `std::invalid_argument` | if `ttl` is out of range. |

---

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

### address

`virtual` `const` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:101](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L101)

Returns the locally bound address, or a wildcard address if unbound.

#### Reimplements

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

---

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

### peerAddress

`virtual` `const` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:104](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L104)

Returns the connected peer address set by [connect()](#connect-9), or a wildcard address if unconnected.

#### Reimplements

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

---

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

### transport

`virtual` `const` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:107](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L107)

Returns the UDP transport protocol.

#### Reimplements

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

---

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

### setError

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:111](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L111)

Sets the socket error and triggers 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-15"></a>

### error

`virtual` `const` `override`

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

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

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-5"></a>

### closed

`virtual` `const` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:117](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L117)

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="loop-6"></a>

### loop

`virtual` `const` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:120](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L120)

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="onrecv-1"></a>

### onRecv

`virtual`

```cpp
virtual void onRecv(const MutableBuffer & buf, const net::Address & address)
```

[Defined in src/net/include/icy/net/udpsocket.h:125](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L125)

Dispatches a received datagram 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) & | Buffer containing the received datagram payload. |
| `address` | const [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) & | [Address](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) of the sender. |

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`net::Address`](https://auscaster.com/icey/docs/api-reference/icy-net-Address.md#address) | [`_peer`](#_peer)  |  |
| [`Buffer`](https://auscaster.com/icey/docs/api-reference/base.md#buffer) | [`_buffer`](#_buffer-2)  |  |

---

<a id="_peer"></a>

### _peer

```cpp
net::Address _peer
```

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

[Defined in src/net/include/icy/net/udpsocket.h:141](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L141)

---

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

### _buffer

```cpp
Buffer _buffer
```

Type: [`Buffer`](https://auscaster.com/icey/docs/api-reference/base.md#buffer)

[Defined in src/net/include/icy/net/udpsocket.h:142](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L142)

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`init`](#init-12) `virtual` `override` | Initializes the underlying socket context. |
| `void` | [`reset`](#reset-15) `virtual` `override` | Resets the socket context for reuse. |
| `void` | [`onError`](#onerror-2) `virtual` `override` | Called by [`setError()`](#seterror-4) after the error state has been updated. |
| `void` | [`onClose`](#onclose-2) `virtual` `override` | Called by [`close()`](#close-23) after the context has been released. |
| `bool` | [`recvStart`](#recvstart) `virtual` |  |
| `bool` | [`recvStop`](#recvstop) `virtual` |  |

---

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

### init

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:128](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L128)

Initializes the underlying socket context.

#### Reimplements

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

---

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

### reset

`virtual` `override`

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

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

Resets the socket context for reuse.

#### Reimplements

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

---

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

### onError

`virtual` `override`

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

[Defined in src/net/include/icy/net/udpsocket.h:131](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L131)

Called by [`setError()`](#seterror-4) after the error state has been updated.

Override to react to errors. The default implementation is a no-op.

#### 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 was set. |

---

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

### onClose

`virtual` `override`

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

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

Called by [`close()`](#close-23) after the context has been released.

Override to perform cleanup on handle closure. The default implementation is a no-op.

#### Reimplements

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

---

<a id="recvstart"></a>

### recvStart

`virtual`

```cpp
virtual bool recvStart()
```

[Defined in src/net/include/icy/net/udpsocket.h:134](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L134)

---

<a id="recvstop"></a>

### recvStop

`virtual`

```cpp
virtual bool recvStop()
```

[Defined in src/net/include/icy/net/udpsocket.h:135](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L135)

## Public Types

| Name | Description |
|------|-------------|
| [`Ptr`](#ptr-15)  |  |
| [`Vec`](#vec-3)  |  |

---

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

### Ptr

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

Type: std::shared_ptr< [`UDPSocket`](#udpsocket) >

[Defined in src/net/include/icy/net/udpsocket.h:32](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L32)

---

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

### Vec

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

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

[Defined in src/net/include/icy/net/udpsocket.h:33](https://github.com/auscaster/icey/blob/main/src/net/include/icy/net/udpsocket.h#L33)
