这几行代码有什么问题?(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;
}
}
...全文
81 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>
点量Http、FTP多线程断点续传下载组件(下载DLL)的开发目的是让用户可以无需关心Http/FTP协议的具体细节,只需要几十行甚至几行代码,便可以实现一个功能完善的Http/FTP下载软件。点量Http/FTP下载组件(DLL)支持多线程、断点续传、显示详细下载过程、自动查找镜像网址、支持代理传输等完善的功能。 点量Http、FTP下载内核源码使用高效的c++代码编写,提供标准的动态链接库(DLL),可供C/C++、Delphi、C#、Java、VB等语言和各常用开发环境调用,让您完全像调用系统API一样的调用。 点量Http/FTP组件的功能简介: 标准Http和FTP下载支持:完全标准的Http和FTP协议支持,内部通过网址自动区分是Http还是FTP下载。 极速下载(2.0以后版本):超越国内绝大多数下载软件的下载速度。新版内核在2M ADSL的环境下下载,有些文件的速度可以达到1400K字节/秒以上,超过了带宽的极限。下载速度可以用极速形容。 多线程传输:可以将文件自动分块,并采用多线程下载。并可自由设置线程数目。 断点续传:点量Http/FTP有优秀的断点续传支持,每次启动自动从上次下载的位置开始,不需要重复下载。 提供详细的下载详情接口(2.0以后版本):可以看到整个下载过程的步骤,比如开启了多少线程、服务器的应答过程、错误信息等。 支持多种高级设置:设置线程数目、磁盘缓存大小、搜索镜像服务器的详细参数设置、下载文件完成后同步文件为服务器上的文件时间、下载过程中可以自定义文件临时后缀、未完成的文件设为隐藏属性。 支持磁盘缓存:点量Http/FTP下载DLL支持设置磁盘缓存,减少对磁盘的读写,并提升下载速度。 支持设置Refer:点量Http/FTP下载组件支持设置下载时的Refer,以便可以绕过一些防盗链的网站,直接下载内容。 限速功能:点量Http/FTP下载组件可方便的设置下载限速。 多种磁盘分配方式:点量Http/FTP下载组件支持预分配和边下载边分配两种磁盘方式,满足多种下载需求。 自动搜索镜像加速:点量Http/FTP内置了镜像搜索功能,在下载文件的同时,会自动搜索哪些其它网站还有这个文件,自动从其它网址下载加速。 可提供源码:支付一定的费用,便可以获得全部的点量Http/FTP下载组件的源代码,免除您的所有后顾之忧。 良好的服务:作为点量软件旗下的软件,可享受到点量软件的优秀服务,我们的服务让您如同拥有一个称心的专业员工。 点量Http/FTP 下载组件可以适用于任何Http和FTP下载的领域,让您可以在1天内完成一个完整的Http下载软件的全部功能。比如,您可以用于产品的升级、文件的下载和传输等。

111,097

社区成员

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

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

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