【探索发现】winform 网络传输时候封包与解包心得
我这个不是一个很好的传输格式,希望可以得到各位的指点。
第一个字节代表:类型
第二个字节开始20字节代表:用户名
第21个字节开始20字节代表:密码
private void button1_Click(object sender, EventArgs e) { byte[] package = Pack(); Unpack(package); } static int userlength = 20; static int passlength = 20; //打包 private byte[] Pack() { byte[] buffer = new byte[1024]; buffer[0] = 1;//类型 byte[] username = Encoding.UTF8.GetBytes("Sam");//有长度限制 byte[] userpass = Encoding.UTF8.GetBytes("Password");//有长度限制 Array.Copy(username, 0, buffer, 1, username.Length); Array.Copy(userpass, 0, buffer, 1 + userlength, userpass.Length); return buffer; } //解包 private void Unpack(byte[] buffer) { int type = buffer[0]; byte[] username = new byte[userlength]; byte[] userpass = new byte[passlength]; Array.Copy(buffer, 1, username, 0, userlength); Array.Copy(buffer, 1 + userlength, userpass, 0, passlength); string strName = Encoding.UTF8.GetString(username).TrimEnd('\0'); string strPass = Encoding.UTF8.GetString(userpass).TrimEnd('\0'); string strInfo = string.Format("类型: {0} 用户名:{1} 密码:{2}", type.ToString(), strName, strPass); MessageBox.Show(strInfo, "解包完成"); }
最后效果:
Demo:https://files.cnblogs.com/--Sam--/NetDataTranFormat.rar