请教Ftp高手(c#、Ftp相关),这个代码有什么问题?

javaduke 2002-03-06 01:42:22
Port命令后放送Rete文件。

然后生成DataSocket,采用streamwriter下载文件

小文件<50K一般工作正常,当时>200k的文件往往传输过程中会

自动中断传输。提示远程主机主动断开连接。

然而再去用list命令却提示data connection in use

不知道为什么。下面的streamwrite在pasv模式下运行正常。

listener.start后产生的dataSocket还需要特别的设置吗?


public static Socket DataSocket(){
TcpListener listener = new TcpListener(dataPort);
listener.Start();
FtpFunction.dataPort+=2;
return listener.AcceptSocket();
}

public static void StreamWriter(string path,Socket dataSocket,bool resume,long filesize)
{
updown=true;
idletime=DateTime.Now.Ticks;//开始计算速度
FileStream writer=null;
if(resume) {writer=File.Open(path,FileMode.Append,FileAccess.Write);totalread=filesize;}
else {writer=File.Create(path);totalread=0;}
try
{
Thread oThread=Thread.CurrentThread;
lock(oThread)
{
byte[] buffer=new byte[1024];
int bytesread=1;
while(bytesread>0&&FtpFunction.updownstart)
{
bytesread=dataSocket.Receive(buffer,0,buffer.Length,SocketFlags.None);
writer.Write(buffer,0,bytesread);
totalread+=(long)bytesread;
}
}
}
finally
{
dataSocket.Shutdown(SocketShutdown.Both);
dataSocket.Close();
writer.Close();
updown=false;
totalftp+=totalread;
totalread=0;
}
}
...全文
45 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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