这几行代码有什么问题?(Ftp有关)

javaduke 2002-03-06 01:40:31
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;
}
}
...全文
79 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaduke 2002-03-08
  • 打赏
  • 举报
回复
问题找到了,设置一个linger即可。
javaduke 2002-03-06
  • 打赏
  • 举报
回复
web.config在应用程序中如何运用。我想socket应该有这方面的设置,但是没找到。
leonyjj 2002-03-06
  • 打赏
  • 举报
回复
估计是下载大文件的时候,服务器为了防止长时间的连接,而断开了把,你可以试着在web.config中加入以下代码试试。maxRequestLength是用于设置长度的。
<configuration>
<system.web>
<httpRuntime maxRequestLength="4000"
useFullyQualifiedRedirectUrl="true"
executionTimeout="45"/>
</system.web>
</configuration>

111,097

社区成员

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

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

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