# UDPClient

<a id="udpclient"></a>

# UDPClient

```cpp
#include <icy/turn/client/udpclient.h>

class UDPClient
```

[Defined in src/turn/include/icy/turn/client/udpclient.h:31](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/client/udpclient.h#L31)

> **Inherits:** [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3)

UDP transport TURN client for datagram-based relay allocations. Uses a single UDP socket for both STUN signalling and Send/Data Indications. All [Client](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) methods apply; data is relayed via [sendData()](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#senddata) using Send Indications.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`UDPClient`](#udpclient-1) | `function` | Declared here |
| [`~UDPClient`](#udpclient-2) | `function` | Declared here |
| [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-4) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`~Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-5) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`start`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#start-27) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`stop`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#stop-16) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`sendAllocate`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendallocate) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission-1) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`sendCreatePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendcreatepermission) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`sendChannelBind`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendchannelbind) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`sendRefresh`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendrefresh) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`sendData`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#senddata) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`handleResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handleresponse) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`handleAllocateResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handleallocateresponse) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`handleAllocateErrorResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handleallocateerrorresponse) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`handleCreatePermissionResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handlecreatepermissionresponse) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`handleCreatePermissionErrorResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handlecreatepermissionerrorresponse) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`handleRefreshResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handlerefreshresponse) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`handleDataIndication`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handledataindication) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`transportProtocol`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#transportprotocol) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`createTransaction`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#createtransaction) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`authenticateRequest`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#authenticaterequest) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`sendAuthenticatedTransaction`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendauthenticatedtransaction) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`removeTransaction`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#removetransaction) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`mappedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#mappedaddress) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`relayedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#relayedaddress) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`closed`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#closed-7) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`observer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#observer-1) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`options`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#options-9) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission-2) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission-3) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#haspermission) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#haspermission-1) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#removepermission) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#removepermission-1) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_observer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_observer-1) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_options`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_options-3) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_socket`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_socket-3) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_timer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_timer-3) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_error`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_error-7) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_mappedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_mappedaddress) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_relayedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_relayedaddress) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_realm`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_realm) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_nonce`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_nonce) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_pendingIndications`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_pendingindications) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`_transactions`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_transactions) | `variable` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`setError`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#seterror-6) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onsocketconnect-5) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onsocketrecv-7) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onsocketclose-5) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`onTransactionProgress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#ontransactionprogress) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onstatechange-4) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`onTimer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#ontimer-1) | `function` | Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) |
| [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#operator-224) | `friend` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-1) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`~IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-2) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-3) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#operator-225) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-4) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#operator-226) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`updateUsage`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#updateusage) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`setLifetime`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#setlifetime) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`setBandwidthLimit`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#setbandwidthlimit) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`expired`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#expired-1) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`deleted`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#deleted-1) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`bandwidthLimit`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#bandwidthlimit) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`bandwidthUsed`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#bandwidthused) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`bandwidthRemaining`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#bandwidthremaining) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`timeRemaining`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#timeremaining) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`tuple`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#tuple) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`username`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#username-3) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`lifetime`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#lifetime-1) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`permissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#permissions) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`relayedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#relayedaddress-1) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#addpermission-4) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#addpermission-5) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`addPermissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#addpermissions) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removepermission-2) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removepermission-3) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`removeAllPermissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removeallpermissions) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`removeExpiredPermissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removeexpiredpermissions) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#haspermission-2) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#haspermission-3) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`print`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#print-13) | `function` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_tuple`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_tuple) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_username`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_username-2) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_permissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_permissions) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_lifetime`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_lifetime) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_bandwidthLimit`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_bandwidthlimit) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_bandwidthUsed`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_bandwidthused) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_createdAt`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_createdat) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_updatedAt`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_updatedat) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |
| [`_deleted`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_deleted) | `variable` | Inherited from [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation) |

## Inherited from [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-4)  |  |
| `function` | [`~Client`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-5) `virtual` |  |
| `function` | [`start`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#start-27) `virtual` | Connects the socket to the TURN server and starts the allocation sequence. Permissions must be added via [addPermission()](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission) before calling this. |
| `function` | [`stop`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#stop-16) `virtual` | Stops the timer, cancels pending transactions, and closes the socket. |
| `function` | [`sendAllocate`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendallocate) `virtual` | Sends an Allocate request to the server with the configured transport and lifetime. On first call the server will typically respond with a 401 challenge; the client re-sends with credentials automatically. |
| `function` | [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission) `virtual` | Adds multiple peer IP addresses to the permission list. |
| `function` | [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission-1) `virtual` `override` | Adds a single peer IP to the permission list, or refreshes it if already present. Permissions should be added before [start()](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#start-27); they may also be added later, in which case a new CreatePermission request is required. |
| `function` | [`sendCreatePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendcreatepermission) `virtual` | Sends a CreatePermission request for all IPs currently in the permission list. Called automatically after allocation succeeds and periodically by the timer to refresh expiring permissions. |
| `function` | [`sendChannelBind`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendchannelbind) `virtual` | Channel bindings (RFC 5766 Section 11) are intentionally not implemented. They are a bandwidth optimization that replaces STUN-framed Send/Data indications with a compact 4-byte ChannelData header. This only benefits high-throughput media relay scenarios; in practice, media flows directly via ICE/DTLS rather than through this TURN client's data path, so the optimization is not worth the complexity (channel number allocation, 10-minute binding refresh timers, ChannelData wire framing). Data relay uses [sendData()](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#senddata) with Send Indications instead. |
| `function` | [`sendRefresh`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendrefresh) `virtual` | Sends a Refresh request to extend the allocation lifetime. Called automatically by the timer when roughly one-third of the lifetime remains. |
| `function` | [`sendData`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#senddata) `virtual` | Sends a Send Indication to relay `data` to `peerAddress` through the TURN server. If permissions are still being negotiated the indication is queued and flushed once CreatePermission succeeds. |
| `function` | [`handleResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handleresponse) `virtual` | Dispatches an incoming STUN/TURN response to the appropriate handler. |
| `function` | [`handleAllocateResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handleallocateresponse) `virtual` | Processes a successful Allocate response; extracts mapped/relayed addresses and advances the state to Authorizing, then sends CreatePermission. |
| `function` | [`handleAllocateErrorResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handleallocateerrorresponse) `virtual` | Handles an Allocate error response; manages the 401 challenge/re-send flow and sets the client to Failed for unrecoverable errors. |
| `function` | [`handleCreatePermissionResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handlecreatepermissionresponse) `virtual` | Handles a successful CreatePermission response; flushes queued Send Indications and advances state to Success. |
| `function` | [`handleCreatePermissionErrorResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handlecreatepermissionerrorresponse) `virtual` | Handles a failed CreatePermission response; clears all permissions and sets the client to Failed. |
| `function` | [`handleRefreshResponse`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handlerefreshresponse) `virtual` | Handles a Refresh response; updates the stored lifetime. |
| `function` | [`handleDataIndication`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#handledataindication) `virtual` | Handles an incoming Data Indication; extracts peer address and data and forwards to [ClientObserver::onRelayDataReceived()](https://auscaster.com/icey/docs/api-reference/icy-turn-ClientObserver.md#onrelaydatareceived). |
| `function` | [`transportProtocol`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#transportprotocol) `virtual` |  |
| `function` | [`createTransaction`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#createtransaction) `virtual` | Creates a new STUN transaction, registers the progress callback, and adds it to the active transaction list. |
| `function` | [`authenticateRequest`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#authenticaterequest) `virtual` | Adds STUN long-term credential attributes (Username, Realm, Nonce, MessageIntegrity) to `request` if the realm has been received from the server. |
| `function` | [`sendAuthenticatedTransaction`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#sendauthenticatedtransaction) `virtual` | Calls [authenticateRequest()](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#authenticaterequest) then sends the transaction. |
| `function` | [`removeTransaction`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#removetransaction) `virtual` | Removes a transaction from the active list. The [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) keeps the object alive until the caller's copy is released. |
| `function` | [`mappedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#mappedaddress) `const` |  |
| `function` | [`relayedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#relayedaddress) `virtual` `const` `override` |  |
| `function` | [`closed`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#closed-7) `const` |  |
| `function` | [`observer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#observer-1)  |  |
| `function` | [`options`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#options-9) `const` |  |
| `function` | [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission-2) `virtual` | Adds a permission for `ip`, or refreshes the existing one. |
| `function` | [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#addpermission-3) `virtual` | Adds a permission for `address`, or refreshes the existing one. The port is ignored; TURN permissions are IP-only. |
| `function` | [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#haspermission) `virtual` | Checks whether a permission exists for `peerIP`. Local addresses (192.168.x.x and 127.x.x.x) are always permitted. |
| `function` | [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#haspermission-1) `virtual` | Checks whether a permission exists for `peerAddress`. The port is ignored; TURN permissions are IP-only. |
| `function` | [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#removepermission) `virtual` | Removes the permission for `ip` if present. |
| `function` | [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#removepermission-1) `virtual` | Removes the permission for `address` if present. The port is ignored; TURN permissions are IP-only. |
| `variable` | [`_observer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_observer-1)  |  |
| `variable` | [`_options`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_options-3)  |  |
| `variable` | [`_socket`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_socket-3)  |  |
| `variable` | [`_timer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_timer-3)  |  |
| `variable` | [`_error`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_error-7)  |  |
| `variable` | [`_mappedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_mappedaddress)  |  |
| `variable` | [`_relayedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_relayedaddress)  |  |
| `variable` | [`_realm`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_realm)  |  |
| `variable` | [`_nonce`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_nonce)  |  |
| `variable` | [`_pendingIndications`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_pendingindications)  | A list of queued Send indication packets awaiting server permissions. |
| `variable` | [`_transactions`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#_transactions)  | A list containing currently active transactions. |
| `function` | [`setError`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#seterror-6) `virtual` | Sets the error field and transitions the client to the Failed state. |
| `function` | [`onSocketConnect`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onsocketconnect-5) `virtual` | Socket connect callback; starts the timer and sends the first Allocate request. |
| `function` | [`onSocketRecv`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onsocketrecv-7) `virtual` | Socket receive callback; parses STUN messages from the buffer and dispatches them. |
| `function` | [`onSocketClose`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onsocketclose-5) `virtual` | Socket close callback; shuts down the client and records the socket error. |
| `function` | [`onTransactionProgress`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#ontransactionprogress) `virtual` | STUN transaction state-change callback; handles Success and Failed outcomes. |
| `function` | [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#onstatechange-4) `override` | Forwards state-change events to the observer. |
| `function` | [`onTimer`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#ontimer-1) `virtual` | Periodic timer callback; re-allocates on expiry or refreshes when lifetime is below one-third remaining. Also calls [ClientObserver::onTimer()](https://auscaster.com/icey/docs/api-reference/icy-turn-ClientObserver.md#ontimer-2). |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange)  | Signals when the state changes. |
| `function` | [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) `inline` |  |
| `function` | [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) `virtual` `inline` |  |
| `function` | [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) `virtual` `const` `inline` | Returns true if the current state ID equals the given ID. |
| `function` | [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) `virtual` `const` `inline` | Returns true if the current state ID is in the inclusive range [lid, rid]. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) `virtual` `inline` | Returns a mutable reference to the current state. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) `virtual` `const` `inline` | Returns a copy of the current state. |
| `variable` | [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state)  |  |
| `function` | [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) `virtual` `inline` | Override to handle pre state change logic. Return false to prevent state change. |
| `function` | [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) `virtual` `inline` | Override to handle post state change logic. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |

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

| Kind | Name | Description |
|------|------|-------------|
| `friend` | [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#operator-224) `inline` |  |
| `function` | [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-1)  |  |
| `function` | [`~IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-2) `virtual` |  |
| `function` | [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-3)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#operator-225)  | Deleted assignment operator. |
| `function` | [`IAllocation`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#iallocation-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#operator-226)  | Deleted assignment operator. |
| `function` | [`updateUsage`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#updateusage) `virtual` | Updates the last-activity timestamp and accumulates bandwidth usage. Call this whenever data is relayed through the allocation. |
| `function` | [`setLifetime`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#setlifetime) `virtual` | Sets the allocation lifetime in seconds and resets the activity timestamp, effectively extending the expiry from the current moment. |
| `function` | [`setBandwidthLimit`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#setbandwidthlimit) `virtual` | Sets the maximum number of bytes this allocation may relay in its lifetime. Pass 0 to disable bandwidth limiting. |
| `function` | [`expired`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#expired-1) `virtual` `const` |  |
| `function` | [`deleted`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#deleted-1) `virtual` `const` | Returns true if the allocation's deleted flag is set and or if the allocation has expired. |
| `function` | [`bandwidthLimit`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#bandwidthlimit) `virtual` `const` |  |
| `function` | [`bandwidthUsed`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#bandwidthused) `virtual` `const` |  |
| `function` | [`bandwidthRemaining`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#bandwidthremaining) `virtual` `const` |  |
| `function` | [`timeRemaining`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#timeremaining) `virtual` `const` |  |
| `function` | [`tuple`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#tuple) `virtual` |  |
| `function` | [`username`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#username-3) `virtual` `const` |  |
| `function` | [`lifetime`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#lifetime-1) `virtual` `const` |  |
| `function` | [`permissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#permissions) `virtual` `const` |  |
| `function` | [`relayedAddress`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#relayedaddress-1) `virtual` `const` |  |
| `function` | [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#addpermission-4) `virtual` | Adds a permission for `ip`, or refreshes the existing one. |
| `function` | [`addPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#addpermission-5) `virtual` | Adds a permission for `address`, or refreshes the existing one. The port is ignored; TURN permissions are IP-only. |
| `function` | [`addPermissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#addpermissions) `virtual` | Adds (or refreshes) permissions for multiple IPs. |
| `function` | [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removepermission-2) `virtual` | Removes the permission for `ip` if present. |
| `function` | [`removePermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removepermission-3) `virtual` | Removes the permission for `address` if present. The port is ignored; TURN permissions are IP-only. |
| `function` | [`removeAllPermissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removeallpermissions) `virtual` | Removes all permissions from the list. |
| `function` | [`removeExpiredPermissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#removeexpiredpermissions) `virtual` | Removes any permissions whose 5-minute lifetime has elapsed. |
| `function` | [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#haspermission-2) `virtual` | Checks whether a permission exists for `peerIP`. Local addresses (192.168.x.x and 127.x.x.x) are always permitted. |
| `function` | [`hasPermission`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#haspermission-3) `virtual` | Checks whether a permission exists for `peerAddress`. The port is ignored; TURN permissions are IP-only. |
| `function` | [`print`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#print-13) `virtual` `const` `inline` |  |
| `variable` | [`_tuple`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_tuple)  |  |
| `variable` | [`_username`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_username-2)  |  |
| `variable` | [`_permissions`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_permissions)  |  |
| `variable` | [`_lifetime`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_lifetime)  |  |
| `variable` | [`_bandwidthLimit`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_bandwidthlimit)  |  |
| `variable` | [`_bandwidthUsed`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_bandwidthused)  |  |
| `variable` | [`_createdAt`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_createdat)  |  |
| `variable` | [`_updatedAt`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_updatedat)  |  |
| `variable` | [`_deleted`](https://auscaster.com/icey/docs/api-reference/icy-turn-IAllocation.md#_deleted)  |  |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`UDPClient`](#udpclient-1)  |  |
|  | [`~UDPClient`](#udpclient-2) `virtual` |  |

---

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

### UDPClient

```cpp
UDPClient(ClientObserver & observer, const Options & options = Options())
```

[Defined in src/turn/include/icy/turn/client/udpclient.h:36](https://github.com/auscaster/icey/blob/main/src/turn/include/icy/turn/client/udpclient.h#L36)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `observer` | [`ClientObserver`](https://auscaster.com/icey/docs/api-reference/icy-turn-ClientObserver.md#clientobserver) & | Observer for allocation lifecycle and data relay events. |
| `options` | const [`Options`](https://auscaster.com/icey/docs/api-reference/icy-turn-Client-Options.md#options-10) & | [Client](https://auscaster.com/icey/docs/api-reference/icy-turn-Client.md#client-3) configuration; defaults to loopback server, 5-min lifetime. |

---

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

### ~UDPClient

`virtual`

```cpp
virtual ~UDPClient()
```

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