public EchoClient(int id, Configuration config, BenchmarkStatistics benchmarkStatistics) : base(config)
        {
            this.id     = id;
            this.config = config;
            this.benchmarkStatistics = benchmarkStatistics;
            deliveryMethod           = LiteNetLibBenchmark.GetDeliveryMethod(config.Transmission);

            listener   = new EventBasedNetListener();
            netManager = new NetManager(listener);
            if (!config.Address.Contains(':'))
            {
                // For LiteNetLib 1.0 and above
                //netManager.IPv6Mode = IPv6Mode.Disabled;

                // LiteNetLib up to 0.9.4
                netManager.IPv6Enabled = IPv6Mode.Disabled;
            }

            netManager.UpdateTime        = Utilities.CalculateTimeout(config.ClientTickRate);
            netManager.UnsyncedEvents    = true;
            netManager.DisconnectTimeout = 10000;

            isConnected = false;
            isDisposed  = false;

            listener.PeerConnectedEvent    += OnPeerConnected;
            listener.PeerDisconnectedEvent += OnPeerDisconnected;
            listener.NetworkReceiveEvent   += OnNetworkReceive;
            listener.NetworkErrorEvent     += OnNetworkError;
        }
        public override void SendMessages(int messageCount, TransmissionType transmissionType)
        {
            var delivery = LiteNetLibBenchmark.GetDeliveryMethod(transmissionType);

            for (int i = 0; i < messageCount; i++)
            {
                Broadcast(MessageBuffer, delivery);
            }
            netManager.TriggerUpdate();
        }