gpt4 book ai didi

从 XE3 升级到 XE4 后 Delphi Indy Ping 错误 10040

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

我创建了一个利用 Indy TIdIcmpClient 对象的 Ping 函数。多年来它一直完美无缺地工作。从 XE3 升级到 XE4 后,相同的代码现在生成错误 10040(消息太长)。

我阅读了有关此错误和建议的解决方案的其他帖子,但没有一个能够 100% 成功。

我已将数据包大小减少到 32、24、12 甚至 0,但仍然收到 10040 错误。

我尝试使用可选参数“Buffer”,它有点工作,但偶尔会导致其他异常。

有人知道如何解决这个问题吗?

这是我的代码:

function Ping(Host: String;Timeout: Integer;ShowError: Boolean; out ErrorText: String): Boolean;
var
IdIcmpClient1: TIdIcmpClient;
Reply: TReplyStatusTypes;
ErrorFlag: Boolean;
ABuffer: String;
begin
Result:=False;
ErrorText:='Success';
ErrorFlag:=False;
Reply:=rsEcho;
ABuffer:=Host+StringOfChar(' ',255);
IdIcmpClient1:=TIdIcmpClient.Create;
IdIcmpClient1.PacketSize:=32;
IdIcmpClient1.Host:=Host;
IdIcmpClient1.ReceiveTimeout:=Timeout;
try
try
IdIcmpClient1.Ping(ABuffer);
except
on E: Exception do
begin
ErrorFlag:=True;
ErrorText:=E.Message;
if ShowError then MessageDlg('Ping Error: '+E.Message, mtWarning, [mbOK], 0);
end;
end;
if not ErrorFlag then
begin
try
Reply:=IdIcmpClient1.ReplyStatus.ReplyStatusType;
except
on E: Exception do
begin
ErrorFlag:=True;
ErrorText:=E.Message;
if ShowError then MessageDlg('Ping Reply Error: '+ErrorText, mtWarning, [mbOK], 0);
end;
end;
end;
if not ErrorFlag then
begin
Result:=Reply=rsEcho;
if not Result then
begin
case Reply of
rsEcho: ErrorText:='rsEcho';
rsError: ErrorText:='rsError';
rsTimeOut: ErrorText:='rsTimeOut';
rsErrorUnreachable: ErrorText:='rsErrorUnreachable';
rsErrorTTLExceeded: ErrorText:='rsErrorTTLExceeded';
rsErrorPacketTooBig: ErrorText:='rsErrorPacketTooBig';
rsErrorParameter: ErrorText:='rsErrorParameter';
rsErrorDatagramConversion: ErrorText:='rsErrorDatagramConversion';
rsErrorSecurityFailure: ErrorText:='rsErrorSecurityFailure';
rsSourceQuench: ErrorText:='rsSourceQuench';
rsRedirect: ErrorText:='rsRedirect';
rsTimeStamp: ErrorText:='rsTimeStamp';
rsInfoRequest: ErrorText:='rsInfoRequest';
rsAddressMaskRequest: ErrorText:='rsAddressMaskRequest';
rsTraceRoute: ErrorText:='rsTraceRoute';
rsMobileHostReg: ErrorText:='rsMobileHostReg';
rsMobileHostRedir: ErrorText:='rsMobileHostRedir';
rsIPv6WhereAreYou: ErrorText:='rsIPv6WhereAreYou';
rsIPv6IAmHere: ErrorText:='rsIPv6IAmHere';
rsSKIP: ErrorText:='rsSkip';
else
ErrorText:='Unknown';
end;
if ShowError then MessageDlg('Ping Error: '+ErrorText, mtWarning, [mbOK], 0);
end;
end;
finally
IdIcmpClient1.Free;
end;
end;

感谢您的宝贵时间,

泰德

最佳答案

针对 TIdIcmpClient 的修复已在进行中,但尚未发布,目前我还没有该版本的预计到达时间。

关于从 XE3 升级到 XE4 后 Delphi Indy Ping 错误 10040,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17059884/

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