NetworkSream 中读取数据,总在流的末尾read()返回值为0的时候,停在那儿!!!!!求解啊

王子辰han 2014-05-19 10:16:30
while (true)
{
try
{
bytesRead = netStream.Read(buffer, 0, buflength);
}
catch
{
}
if (bytesRead <= 0)
break;
filestream.Write(buffer, 0, bytesRead);
this.progressBar.Value += bytesRead;
}
filestream.Close();
我用read方法从网络流里读取数据,实现下载!但是我调一下,每次当read()的返回值为0的那一次read,就停在那儿了。搞了半天也没搞明白,求解啊!
...全文
246 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
王子辰han 2014-05-19
  • 打赏
  • 举报
回复
引用 1 楼 rtdb 的回复:
代码看不出问题,设个断点跟一下就是了
我跟了 结果就是程序停在read()返回值为0的那一次了 不在往下走了
rtdb 2014-05-19
  • 打赏
  • 举报
回复
代码看不出问题,设个断点跟一下就是了
王子辰han 2014-05-19
  • 打赏
  • 举报
回复
引用 3 楼 wodegege10 的回复:
bytesRead = netStream.Read(buffer, 0, buflength); 需要知道还有多少没有传输完毕,是需要协议保证的,不然会一直等待,直到超时 一般简单的会先发一个数据长度,4个字节,然后再发数据内容 接收的时候就会先收取4个字节,得到数据长度,然后再根据这个长度去决定收取多少数据
我用do{ }whille(netstream.DataAvailable)搞定了, 但是出现了新的问题,我用netstream.write()协数据的时候,又会在发送25600字节的时候,卡住,写不进去了,快被搞疯了
wenbin 2014-05-19
  • 打赏
  • 举报
回复
bytesRead = netStream.Read(buffer, 0, buflength); 需要知道还有多少没有传输完毕,是需要协议保证的,不然会一直等待,直到超时 一般简单的会先发一个数据长度,4个字节,然后再发数据内容 接收的时候就会先收取4个字节,得到数据长度,然后再根据这个长度去决定收取多少数据

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧