/// <summary>
        /// Initialize All Events and Initial Values of Object.
        /// </summary>
        protected void Initialize()
        {
            state = ConnectionState.Disconnected;
            packetsToSave = PacketSource.Unknow;
            Xtea = new NativeCryptoManager(CryptoType.Xtea, this);
            RSA = new NativeCryptoManager(CryptoType.RSA, this);
            IPLocal = new IPAddress(new byte[] { 127, 0, 0, 1 });

            OnBeforeConnect += Connection_OnBeforeConnect;
            OnConnect += Connection_OnConnect;
            OnAfterConnect += Connection_OnAfterConnect;
            OnBeforeDisconnect += Connection_OnBeforeDisconnect;
            OnDisconnect += Connection_OnDisconnect;
            OnAfterDisconnect += Connection_OnAfterDisconnect;
        }
        /// <summary>
        /// Dispose the Current Object.
        /// </summary>
        public void Dispose()
        {
            if (State == ConnectionState.Connected) { Disconnect(); }
            Xtea = null;
            RSA = null;
            IPLocal = null;

            OnBeforeConnect = null;
            OnConnect = null;
            OnAfterConnect = null;
            OnBeforeDisconnect = null;
            OnDisconnect = null;
            OnAfterDisconnect = null;
        }