高分求助ftp文件下载堆栈溢出的问题

勇敢的心515 2013-03-12 11:52:14
我写了个程序用ftp去下载文件,ftp连接的上,但是下载文件就出现system.StackOverFlowException这个错误:这个错误一般都是死循环造成的,但是下面的代码里面给出了循环跳出的条件,我用这个代码上另外一个ftp地址下载文件就没有错。 出错的ftp地址
PING也可以ping通,用ftp工具也可以下载

while (true)
{
int iBytes = socketControl.Receive(buffer, buffer.Length, 0); //这里出错
strMsg += ASCII.GetString(buffer, 0, iBytes);
if (iBytes < buffer.Length)
{
break;
}
}


麻烦大家看看,小弟不胜感激.
...全文
201 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2013-03-13
  • 打赏
  • 举报
回复
引用 2 楼 zfyong 的回复:
两个文件的大小只有几M, 这个循环如果有问题的话,我在另外一个ftp服务器里面应该也下载不了吧. 我在另外一个ftp服务器上用同样的方法下载下来的数据是没有问题的.
至少你的问题不是出在这里的判断。 回头看了下你的判断方式,你采用了do-while的模式,先处理数据,后判断是否再要循环;而我说的是while-do的方式,先判断当前是否收到数据,有数据才对数据处理并循环。
勇敢的心515 2013-03-12
  • 打赏
  • 举报
回复
两个文件的大小只有几M, 这个循环如果有问题的话,我在另外一个ftp服务器里面应该也下载不了吧. 我在另外一个ftp服务器上用同样的方法下载下来的数据是没有问题的.
勇敢的心515 2013-03-12
  • 打赏
  • 举报
回复
两个文件的大小只有几M, 这个循环如果有问题的话,我在另外一个ftp服务器里面应该也下载不了吧. 我在另外一个ftp服务器上用同样的方法下载下来的数据是没有问题的.
qldsrx 2013-03-12
  • 打赏
  • 举报
回复
首先你的跳出条件判断就有错误,应该判断 if (iBytes == 0) { break; } 其次你没有说你两次下载的ftp文件大小,出错是文件是不是很大。 最后这个错误不是死循环造成的,而是无限递归造成的,你给的代码没有递归。

111,093

社区成员

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

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

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