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

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

2011-06-01 23:16 435 查看
原文地址:http://www.cnblogs.com/--Sam--/archive/2011/05/29/2061372.html

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

第一个字节代表:类型

第二个字节开始20字节代表:用户名

第21个字节开始20字节代表:密码

view sourceprint?
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐