搜索到的都是http下的断点续传,
还请各位大虾不惜赐教,
ftp下载的断点续传怎么搞阿??
public void download(string remFileName,string
locFileName,Boolean resume)
{
if(!logined)
{
login();
}
setBinaryMode(true);
//Console.WriteLine("Downloading file "+remFileName+" from "+remoteHost + "/"+remotePath);
if (locFileName.Equals(""))
{
locFileName = remFileName;
}
if(!File.Exists(locFileName))
{
Stream st = File.Create(locFileName);
st.Close();
}
FileStream output = new
FileStream(locFileName,FileMode.Open);
Socket cSocket = createDataSocket();
long offset = 0;
if(resume)
{
offset = output.Length;
if(offset > 0 )
{
sendCommand("REST "+offset);
if(retValue != 350)
{
//throw new IOException(reply.Substring(4));
//Some servers may not support resuming.
offset = 0;
}
}
if(offset > 0)
{
//if(debug)
//{
//Console.WriteLine("seeking to " + offset);
//}
long npos = output.Seek(offset,SeekOrigin.Begin);
//Console.WriteLine("new pos="+npos);
}
}
sendCommand("RETR " + remFileName);
if(!(retValue == 150 || retValue == 125))
{
throw new IOException(reply.Substring(4));
}
while(true)
{
bytes = cSocket.Receive(buffer, buffer.Length, 0);
output.Write(buffer,0,bytes);
if(bytes <= 0)
{
break;
}
}
output.Close();
if (cSocket.Connected)
{
cSocket.Close();
}
//Console.WriteLine("");
readReply();
if( !(retValue == 226 || retValue == 250) )
{
throw new IOException(reply.Substring(4));
}
}
参考以下