这几行代码有什么问题?(Ftp有关)
然后生成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;
}
}
相关推荐
C++ 网络库 cpp-netlib的简单使用
示例代码 (C++11, cpp-netlib版本:0.12.0) 需要链接库文件 target_link_libraries(app boost_system network-uri cppnetlib-server-parsers ) #include <network/uri.hpp> #include <nlohmann/json.hpp...
【log4】c++日志工具之——log4cpp
1、log4cpp概述 Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下: 提供应用程序运行上下文,方便跟踪调试; 可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等; 可以动态控制日志记录级别,在效率和功能中进行调整; 所有配置可以通过配置文件进行动态调整; 多语言支持,包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(...
log4cpp 详解及使用操作
Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能。使用log4cpp,可以很便利地将日志或者跟踪调试信息写入字符流、内存字符串队列、文件、回滚文件、调试器、Windows日志、本地syslog和远程syslog服务器中。 1、Log4cpp简介 Log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一致。...
C++ log4cpp的使用
C++ log4cpp使用安装需要了解的四个部分(基本的) log4cpp官网 这里整理了需要使用到的基本内容 安装 从官网下载最新的库文件 下载地址 下载的文件名格式为 log4cpp-x.y.z.tar.gz 以下内容均在Linux中完成 版本信息 Linux version 5.3.0-46-generic (buildd@lcy01-amd64-013) (gcc version 7.5...
c++ 利用yaml-cpp读写yaml配置文件
在程序员的开发生涯中,读写配置文件必不可少。 配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。 配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。 今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 如果有 Python 开发经验的同学,可能知道用 Python 读取 yaml 是再简单不过了,但是 C++ 麻烦一点,它需要你自己下载源码然后编译


