public override void onClientConnect()
        {
            Console.WriteLine("Virtual IP: " + base.VirtualIP);
            Console.Title = "SSP2 Client - ClientId:" + base.ClientId.ToString().Substring(0, 10) + "... - VritualIP:" + base.VirtualIP;
            Console.WriteLine("Connected");
            base.MessageHandler.AddMessage(typeof(TestMessage), "TEST_MESSAGE");
            ISharedTest SharedTest = SharedTest = base.GetSharedClass <ISharedTest>("SharedTest");

            /*string ResolvedDns = base.ResolveDns("TestRootSocket");
             * if (ResolvedDns.Length == 0)
             * {
             *  base.RegisterDns("TestRootSocket");
             *  return;
             * }
             *
             * //peer found, connect to it
             * Console.WriteLine("Connecting to peer " + ResolvedDns);
             * Peer peer = new Peer();
             * PeerErrorCode errorCode = base.ConnectToPeer(ResolvedDns, peer);
             *
             * while (true)
             * {
             *  peer.SendMessage(new TestMessage());
             *  Thread.Sleep(1);
             * }
             * return;*/

            Benchmark BenchLiteCode = new Benchmark();
            int       speedy        = 0;

            while (false)
            {
                BenchLiteCode.Bench(new BenchCallback(() =>
                {
                    //send server our private method, now the server can call our private method ;)
                    //SharedTest.DelegateTest(new Callback<string>(DelegateCallbackTest));
                    SharedTest.SendByteArray(new byte[65535]);
                }));

                if (BenchLiteCode.PastASecond)
                {
                    Console.WriteLine("Call Speed: " + BenchLiteCode.SpeedPerSec + ", Speed: " + Math.Round(((float)speedy / 1000F) / 1000F, 2) + "MBps ");
                    speedy = 0;
                }
            }

            //load a image by opening a stream to the server
            SecureStream ImgStream  = new SecureStream(this);
            int          count      = 0;
            Benchmark    BenchFiles = new Benchmark();

            //Image img = (Image)Bitmap.FromStream(ImgStream);
            //img.Save(@"C:\Users\DragonHunter\Desktop\DownloadedSSP_Image.png");

            while (false)
            {
                Console.WriteLine("Synchronized Server Time: " + base.TimeSync.Hour.ToString("D2") + ":" + base.TimeSync.Minute.ToString("D2") + ":" + base.TimeSync.Second.ToString("D2") + ", " + base.TimeSync.Millisecond);
                Thread.Sleep(1000);
            }

            int         packets        = 0;
            ulong       DataPerSec     = 0;
            Stopwatch   sw             = Stopwatch.StartNew();
            Random      rnd            = new Random();
            TestMessage message        = new TestMessage();
            int         ChannelsClosed = 0;

            while (false)
            {
                TestChannel channel = new TestChannel();

                if (this.OpenChannel(channel) == ChannelError.Success)
                {
                    while (true)
                    {
                        channel.SendMessage(message);
                    }
                    channel.CloseChannel();
                    ChannelsClosed++;

                    if (sw.ElapsedMilliseconds >= 1000)
                    {
                        Console.WriteLine("channels opend/closed: " + ChannelsClosed);
                        sw = Stopwatch.StartNew();
                    }
                }
            }

            RandomDecimal rndDec = new RandomDecimal(DateTime.Now.Millisecond);

            while (base.Connected)
            {
                packets++;
                DataPerSec += (ulong)message.Stuff.Length;
                SharedTest.SendByteArray(message.Stuff);

                if (sw.ElapsedMilliseconds >= 1000)
                {
                    Console.WriteLine("last data size: " + message.Stuff.Length + ", pps:" + packets + ", data/sec:" + DataPerSec + " [" + Math.Round(((float)DataPerSec / 1000F) / 1000F, 2) + "MBps] " + (Math.Round((((float)DataPerSec / 1000F) / 1000F) / 1000F, 2) * 8F) + "Gbps");
                    packets    = 0;
                    DataPerSec = 0;
                    sw         = Stopwatch.StartNew();
                }
            }
            Process.GetCurrentProcess().WaitForExit();
        }