public void Connect()
        {
            var endpoint = new IPEndPoint(IPAddress.Parse(config.host), config.port);

            socket.Connect(endpoint);

            byte[] buffer = new byte[512];
            int    count  = socket.Receive(buffer);

            if (count < 512)
            {
                writer.Rewrite();
                parser.LoadNewBuffer(buffer, count);
                handshake = new HandshakePacket();
                handshake.ParsePacket(parser);
                this.threadId = handshake.threadId;
                byte[] token = MakeToken(config.password, GetScrollbleBuffer(handshake.scrambleBuff1, handshake.scrambleBuff2));
                writer.IncrementPacketNumber();

                //------------------------------------------
                authPacket = new ClientAuthenticationPacket();
                authPacket.SetValues(config.user, token, config.database, handshake.protocol41);
                authPacket.WritePacket(writer);

                byte[] sendBuff    = writer.ToArray();
                byte[] receiveBuff = new byte[512];
                int    sendNum     = socket.Send(sendBuff);
                int    receiveNum  = socket.Receive(receiveBuff);

                parser.LoadNewBuffer(receiveBuff, receiveNum);
                if (receiveBuff[4] == 255)
                {
                    ErrPacket errPacket = new ErrPacket();
                    errPacket.ParsePacket(parser);
                    return;
                }
                else
                {
                    OkPacket okPacket = new OkPacket(handshake.protocol41);
                    okPacket.ParsePacket(parser);
                }
                writer.Rewrite();
                GetMaxAllowedPacket();
                if (MAX_ALLOWED_PACKET > 0)
                {
                    writer.SetMaxAllowedPacket(MAX_ALLOWED_PACKET);
                }
            }
        }