public EncryptedSocket(Socket baseSocket, KeyExchangeAlgorithm keyExchangeAlgorithm)
        {
            this.baseSocket           = baseSocket;
            this.keyExchangeAlgorithm = keyExchangeAlgorithm;

            if (baseSocket.IsConnected())
            {
                this.stream = new EncryptedStreamDuplex(baseSocket.GetStream(), keyExchangeAlgorithm.Exchange(baseSocket.GetStream()));
            }
        }
        public override void Connect(System.Net.IPEndPoint endpoint)
        {
            baseSocket.Connect(endpoint);

            this.stream = new EncryptedStreamDuplex(baseSocket.GetStream(), keyExchangeAlgorithm.Exchange(baseSocket.GetStream()));
        }