예제 #1
0
        public override void Send(ByteBuffer data)
        {
            if (m_bNeedEncrypt)
            {
                EncryptTool.Encrypt(ref data.data, m_iEncryptLen, 1);
                m_bNeedEncrypt = false;
            }

            ByteBuffer sendData = new ByteBuffer(4 + data.data.Length);

            sendData.writeInt(data.data.Length);
            sendData.writeBytes(data.data);
            m_Connect.BeginSend(sendData.data, 0, sendData.data.Length, SocketFlags.None, new AsyncCallback(SendCallback), m_Connect);
        }
예제 #2
0
        public static void ParseConfig(byte[] bConfig)
        {
            m_ConfigData.Clear();
            EncryptTool.Decrypt(ref bConfig, 20);
            string sConfig = Decompress(bConfig);

            int valuePos = 0;
            int pos      = 0;

            while (true)
            {
                pos = sConfig.IndexOf("------@", valuePos);
                if (-1 == pos)
                {
                    break;
                }

                pos += 7;
                int    nPos    = sConfig.IndexOf('\n', pos);
                string cfgName = sConfig.Substring(pos, nPos - pos);

                try
                {
                    ConfigTable cfgTbl = new ConfigTable();
                    m_ConfigData.Add(cfgName, cfgTbl);

                    pos  = nPos + 1;
                    nPos = sConfig.IndexOf("\n", pos);
                    bool bFlag = true;
                    while (bFlag)
                    {
                        try
                        {
                            cfgTbl.AddColKey(GetNextValue(ref pos, ref nPos, ref bFlag, ref sConfig));
                        }
                        catch (System.Exception e)
                        {
                            Debug.LogError(String.Format("{0} 表名:{1}", e, cfgName));
                        }
                    }

                    nPos     = sConfig.IndexOf("\n", pos);
                    bFlag    = true;
                    valuePos = nPos + 1;
                    while (bFlag)
                    {
                        string    rowName   = GetNextValue(ref pos, ref nPos, ref bFlag, ref sConfig);
                        int       valueNPos = sConfig.IndexOf("\n", valuePos);
                        bool      valueFlag = true;
                        int       a         = 0;
                        ConfigRow rowData   = new ConfigRow();
                        rowData.AddValue(rowName);
                        while (valueFlag)
                        {
                            string value = GetNextValue(ref valuePos, ref valueNPos, ref valueFlag, ref sConfig);
                            value = value.Replace("#r", "\n");
                            rowData.AddValue(value);
                            ++a;
                        }
                        cfgTbl.AddRow(rowName, rowData);
                    }
                }
                catch (System.Exception e)
                {
                    Debug.LogError(string.Format("{0}.配置表名:{1}", e, cfgName));
                }
            }
        }