• (转)【探索发现】winform 网络传输时候封包与解包心得


    原文地址:http://www.cnblogs.com/--Sam--/archive/2011/05/29/2061372.html

    我这个不是一个很好的传输格式,希望可以得到各位的指点。

    第一个字节代表:类型

    第二个字节开始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

  • 相关阅读:
    VMWare上的ubuntu系统安装VMWare Tools(图文)
    Ubuntu添加新分区
    emacs入门
    SQL UNION 操作符
    eclipse安装其他颜色主题包
    mysql左连接
    不能用notepad++编辑器编写python
    ImportError: No module named simplejson.scanner
    运行 python *.py 文件出错,如:python a.py
    doc命令大全(详细版)
  • 原文地址:https://www.cnblogs.com/fcsh820/p/2067497.html
Copyright © 2020-2023  润新知