/// <summary>
        ///     Creates a new UdpConnectionListener for the given <see cref="IPAddress"/>, port and <see cref="IPMode"/>.
        /// </summary>
        /// <param name="endPoint">The endpoint to listen on.</param>
        public UdpConnectionListener(IPEndPoint endPoint, IPMode ipMode = IPMode.IPv4, Action <string> logger = null)
        {
            this.Logger   = logger;
            this.EndPoint = endPoint;
            this.IPMode   = ipMode;

            this.socket = UdpConnection.CreateSocket(this.IPMode);

            socket.ReceiveBufferSize = SendReceiveBufferSize;
            socket.SendBufferSize    = SendReceiveBufferSize;

            reliablePacketTimer = new Timer(ManageReliablePackets, null, 100, Timeout.Infinite);
        }
        /// <summary>
        ///     Creates a new UdpConnectionListener for the given <see cref="IPAddress"/>, port and <see cref="IPMode"/>.
        /// </summary>
        /// <param name="endPoint">The endpoint to listen on.</param>
        public UdpConnectionListener(IPEndPoint endPoint, IPMode ipMode = IPMode.IPv4, ILogger logger = null)
        {
            this.Logger   = logger;
            this.EndPoint = endPoint;
            this.IPMode   = ipMode;

            this.socket = UdpConnection.CreateSocket(this.IPMode);

            socket.ReceiveBufferSize = SendReceiveBufferSize;
            socket.SendBufferSize    = SendReceiveBufferSize;

            reliablePacketTimer = new Thread(ManageReliablePackets);
            reliablePacketTimer.Start();
        }