async Task ConnectVoiceUdpSocket()
        {
            if (udpSocket == null)
            {
                throw new InvalidOperationException("[ConnectVoiceUdpSocket] udpSocket must not be null!");
            }
            if (string.IsNullOrWhiteSpace(endPoint))
            {
                throw new InvalidOperationException("[ConnectVoiceUdpSocket] endPoint must be set!");
            }
            if (!port.HasValue)
            {
                throw new InvalidOperationException("[ConnectVoiceUdpSocket] port must not be null!");
            }

            log.LogVerbose($"[ConnectVoiceUdpSocket] Connecting UdpSocket to {endPoint}:{port}...");

            try
            {
                await udpSocket.ConnectAsync(endPoint, port.Value).ConfigureAwait(false);
            }
            catch (SocketException ex)
            {
                log.LogError("[ConnectVoiceUdpSocket] Failed to connect UDP socket: " +
                             $"code = {ex.SocketErrorCode}, error = {ex}");
                throw;
            }
        }
        async Task ConnectVoiceUdpSocket()
        {
            if (udpSocket == null)
            {
                throw new InvalidOperationException("[ConnectVoiceUdpSocket] udpSocket must not be null!");
            }
            if (udpIP == null)
            {
                throw new InvalidOperationException("[ConnectVoiceUdpSocket] udpIP must not be null!");
            }
            if (!udpPort.HasValue)
            {
                throw new InvalidOperationException("[ConnectVoiceUdpSocket] udpPort must not be null!");
            }

            log.LogVerbose($"[ConnectVoiceUdpSocket] Connecting UdpSocket to {udpIP}:{udpPort}...");

            try
            {
                await udpSocket.ConnectAsync(udpIP, udpPort.Value).ConfigureAwait(false);
            }
            catch (SocketException ex)
            {
                log.LogError("[ConnectVoiceUdpSocket] Failed to connect UDP socket: " +
                             $"code = {ex.SocketErrorCode}, error = {ex}");
                throw;
            }
        }