日安..。
我下载了一个使用except on E: EIdSocketError the begin生成错误套接字的程序.他向我展示了产生的错误..。但我想解决这个错误..。因为它与我下载的网站断开连接,而他为程序,我不能返回任何下载.除非你关闭程序重新打开..。
我怎么能得到这个错误,让他尝试重新设置一个新的连接到网站,而不用我重新启动程序.所以我回去下载最新下载的文件.由于套接字错误必须重新启动程序并返回下载,所以Zero . 1mb文件很小,但它们大约有200个供下载:
on E: EIdSocketError do begin
ShowMessage('Socket 2');
// +++++------
FreeAndNil(fileDownload);
fileDownload := TFileStream.Create(local_exe+'media_'+IntToStr(down_num)+'.mp4', fmCreate);
IdHTTP.Get(montarURL, fileDownload);
Memo1.Lines.Add(formatdatetime('dd/mm/yyyy',now)+' '+formatdatetime ('hh:mm:ss',now)+' Lista '+IntToStr(numero_tentativa_loop_um)+'. Connection restored.');
end;发布于 2014-01-23 23:28:21
套接字错误# 10054必须纠正,因为出现的是他.我不知道它是否会与其他人一起工作:
RemoveComponent(IdHTTP);
IdHTTP.Free;
IdHTTP := Nil;
IdHTTP := TIdHTTP.Create(Self);ATT
发布于 2014-01-22 20:54:42
EIdSocketError的意思正是它的名称--发生了一个套接字错误。在没有看到实际的套接字错误代码的情况下,通常您所能做的恢复只是Disconnect()套接字、Clear IOHandler.InputBuffer和重新-Connect(),然后在停止下载的地方(如果可能的话)继续下载,或者从头开始重新启动下载。
对于HTTP,如果下载的资源接受Range: bytes=...请求头(请参阅TIdHTTP.Request.Range属性),则可以恢复下载,例如在先前的下载尝试中它报告了Accept-Ranges: bytes响应头(请参阅TIdHTTP.Response.AcceptRanges属性)。有关更多详细信息,请参阅RFC 2616第14.35节。
更新:例如:
try
IdHTTP.Get(montarURL, fileDownload);
except
on E: EIdSocketError do begin
IdHTTP.Disconnect;
if IdHTTP.IOHandler <> nil then IdHTTP.IOHandler.InputBuffer.Clear;
...
if IdHTTP.Response.AcceptRanges = 'bytes' then begin
IdHTTP.Request.Range := IntToStr(fileDownload.Size) + '-';
end else begin
fileDownload.Size := 0;
end;
IdHTTP.Get(montarURL, fileDownload);
...
end;
end;https://stackoverflow.com/questions/21290797
复制相似问题