异步下载byte[]问题,在线等,搞定立即结贴,急急急急急急急
我在接收端申明了一个byte[] allbuf=new byte[2048*1024]的2M缓存
发送端每次发的包是512K,接收端直到每次发过来的包达到allbuf的容量后再写入硬盘,如下:
private void ReceiveCallBack(IAsyncResult ar)
{
allbuf //2M缓存
filebuf //文件字节数组,这时数据已经写如filebuf
Array.Copy(allbuf);//简化了写发,我只是想表达意思,这里把文件字节复制到2M缓存
if (token[1] == allbuf.Length.ToString() || allbuf.Length == (2048 *1024) || j==bagnum || allbuf.Length > 2096640)
{
写如硬盘
}
BeginReceive(.......); //接收文件
}
问题出在这里 allbuf.Length不管接收到多少,他的Length都等于2048*1024,比如只接收到一个512K的包,在IF判断那里我是不会写入硬盘的,只会循环继续复制到allbuf里,但是始终allbuf.Length==2048*1024,因为在接受到512K后allbuf后面以0补充了字节数组allbuf,因为我设置了固定长度给allbuf 为2048*1024
请问各位大虾改怎样解决此事?能不能获取到真真的数据的长度,而不是我申明时的2048*1024