Example #1
0
        public static List <OrganizeAttr> LoadOrganizeInfos(string file, bool reload = false)
        {
            if (!reload && m_OrganizeAttrList.Count != 0)
            {
                return(m_OrganizeAttrList);
            }

            List <OrganizeAttr> OrganizeAttrList = new List <OrganizeAttr>();

            OrganizeAttrList.Clear();

            string dbfile = file;

            if (!File.Exists(dbfile))
            {
                OrganizeAttrList.Clear();
                return(OrganizeAttrList);
            }

            if (File.Exists(@".\\Temp\\organize.dat"))
            {
                File.SetAttributes(@".\\Temp\\organize.dat", FileAttributes.Normal);
                File.Copy(dbfile, @".\\Temp\\organize.dat", true);
            }
            else
            {
                File.Copy(dbfile, @".\\Temp\\organize.dat", false);
            }


            FileStream       fs   = new FileStream(".\\Temp\\organize.dat", FileMode.Open, FileAccess.ReadWrite);
            OrganizeAttrHead head = new OrganizeAttrHead();

            int ret = 0;

            byte[] bytData = new byte[Marshal.SizeOf(head)];
            ret = fs.Read(bytData, 0, Marshal.SizeOf(head));
            while (ret > 0)
            {
                OrganizeAttr aa       = new OrganizeAttr();
                byte[]       _bytData = new byte[Marshal.SizeOf(aa)];
                ret = fs.Read(_bytData, 0, Marshal.SizeOf(aa));
                if (ret <= 0)
                {
                    break;
                }
                OrganizeAttr attr = CStructBytesFormat.BytesToStruct <OrganizeAttr>(_bytData);

                OrganizeAttrList.Add(attr);
            }

            fs.Close();

            //更新本地list
            m_OrganizeAttrList.Clear();
            m_OrganizeAttrList = OrganizeAttrList;

            return(m_OrganizeAttrList);
        }
Example #2
0
        public static Tran_Head GetDataHead(byte[] data)
        {
            Tran_Head head = new Tran_Head();

            byte[] rcv_head = new byte[Marshal.SizeOf(head)];
            Array.ConstrainedCopy(data, 0, rcv_head, 0, Marshal.SizeOf(head));
            head = (Tran_Head)CStructBytesFormat.BytesToStruct <Tran_Head>(rcv_head);

            return(head);
        }
Example #3
0
        public static byte[] BuildBytes <T>(Tran_Head hd, T obj)
        {
            byte[] head = CStructBytesFormat.StructToBytes(hd);
            byte[] data = CStructBytesFormat.StructToBytes(obj);

            byte[] rbyte = new byte[data.Length + head.Length];

            Array.ConstrainedCopy(head, 0, rbyte, 0, head.Length);
            Array.ConstrainedCopy(data, 0, rbyte, head.Length, data.Length);

            return(rbyte);
        }
Example #4
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //MessageBox.Show("Form1_Load");
            //全局版本文件和版本记录
            g_versionFile = System.AppDomain.CurrentDomain.BaseDirectory + g_versionFile;
            g_oldVersion  = CIniCtrl.ReadIniData("Version", "ver", "", g_versionFile);

            //获取服务器IP
            LoadServerConf();

            //thClient = new Thread(new ThreadStart(new ThreadStart(Updating)));
            //thClient.Start();

            this.TopMost = true;
            this.Activate();
            this.TopMost = false;
            //Thread.Sleep(1000);
            try {
                Ver_Info tran_data;
                tran_data.ver = "get_version";
                Tran_Head tran_head;

                byte[] data = CStructBytesFormat.StructToBytes(tran_data);

                tran_head.cmd    = 2;
                tran_head.length = data.Length;

                byte[] rbyte = CDataBuil.BuildBytes(tran_head, tran_data);

                if (ServerConnection())
                {
                    SendMessage(rbyte);
                }
                else
                {
                    label2.Text = "无法自动更新,请检查网络...";
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(System.AppDomain.CurrentDomain.BaseDirectory, ex.Message, new StackTrace(new StackFrame(true)));

                label2.Text = "无法自动更新,请检查网络...";
            }
        }
Example #5
0
        public static T GetDataObj <T>(byte[] data, Tran_Head head)
        {
            if (data == null)
            {
                return(default(T));
            }
            if (data.Length <= 0)
            {
                return(default(T));
            }
            int objLength = Marshal.SizeOf(typeof(T));

            byte[] rcv_data = new byte[head.length];
            T      obj;

            Array.ConstrainedCopy(data, Marshal.SizeOf(head), rcv_data, 0, rcv_data.Length);
            obj = (T)CStructBytesFormat.BytesToStruct <T>(rcv_data);

            return(obj);
        }