gpt4 book ai didi

delphi - 在不重新启动下载的情况下恢复 EIdSocketError 连接 - Delphi

转载 作者:行者123 更新时间:2023-12-03 19:31:03 25 4
gpt4 key购买 nike

再会 ...

我下载了一个程序,它使用 except on E: EIdSocketError the begin 生成错误 Socket'm ...他向我展示了生成的错误...但是我想解决此错误...因为它与我正在下载的站点断开连接,而他对于该程序,我无法返回任何下载.. . 除非您关闭程序并重新打开...

我怎么会收到此错误,让他尝试重置与站点的新连接,而无需重新启动程序...所以我回去下载最新下载的文件....因为套接字错误必须重新启动程序并返回下载 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;

最佳答案

EIdSocketError意思就是它的名字所说的——发生了一个套接字错误。在没有看到实际涉及的套接字错误代码的情况下,通常您可以做的恢复只是 Disconnect() socket ,Clear IOHandler.InputBuffer ,然后重新 Connect()并从上次中断的地方继续下载(如果可能)或从头重新开始下载。
对于 HTTP,如果正在下载的资源接受 Range: bytes=...,则可以继续下载。请求 header (参见 TIdHTTP.Request.Range 属性),例如它是否报告了 Accept-Ranges: bytes响应头(参见 TIdHTTP.Response.AcceptRanges 属性)在较早的下载尝试中。见 RFC 2616 Section 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;

关于delphi - 在不重新启动下载的情况下恢复 EIdSocketError 连接 - Delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com