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); }
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); }
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); }
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 = "无法自动更新,请检查网络..."; } }
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); }