当前位置:编程学习 > C#/ASP.NET >>

求解,用Socket发送文件接收后文件变大了

//发送端
byte[] by = new byte[10240];
while ((number = fileStream.Read(by, 0, 10240)) > 0)
{
    newSocket.Send(by);
    fileStream.Flush();
    by = new byte[10240];
}

//接收端
byte[] by = new byte[10240];
while ((number = fileSocket.Receive(by)) > 0)
{                            
    fs.Write(by, 0, number); 
    fs.Flush();              
    by = new byte[10240];    
}                            
fs.Close();                  
fileSocket.Close();          


如果发送txt文件会发现原内容后面多了很多空的东西
求高人解答 --------------------编程问答-------------------- 应该是逻辑的问题,仔细看看你的number变量吧。
--------------------编程问答-------------------- - -!
大哥
//发送端
byte[] by = new byte[10240];
while ((number = fileStream.Read(by, 0, 10240)) > 0)
{
newSocket.Send(by);
fileStream.Flush();
by = new byte[10240];
}
by是10240长度的字节数组
你发送的时候是发送by
接收方当然是接受10240长度的字节数组了,如果你的文件没有10240的长度,这时候对方也是接收10240长度的内容,多出来的地方就会补0,所以你写进的文件当然也是比源文件要大的,你有没有发现文件大是变大了,可是里面的内容是对的,只是多了很多空
--------------------编程问答--------------------
引用 2 楼 zsw53362465 的回复:
- -!
大哥
//发送端
byte[] by = new byte[10240];
while ((number = fileStream.Read(by, 0, 10240)) > 0)
{
newSocket.Send(by);
fileStream.Flush();
by = new byte[10240];
}
by是10240长度的字节数组
你发送的时候是发送by……
的确 --------------------编程问答-------------------- 你把by的长度放小点,或者你真想把by长度定为10240的话也可以,发送的时候在加个判断就可以,当文件长度小于10240的时候就发送文件长度的by
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,