您的位置:首页 > 理论基础 > 计算机网络

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

2011-05-29 08:44 204 查看
我这个不是一个很好的传输格式,希望可以得到各位的指点。

第一个字节代表:类型

第二个字节开始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:http://files.cnblogs.com/--Sam--/NetDataTranFormat.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐