小编Pou*_*ave的帖子

当ping.exe成功时会导致ICMPsendEcho失败的原因

我的手上有一个有趣的情况,我不太清楚如何进行故障排除.我做了一些类似于我的情况的搜索,但没有什么比得上它.如果答案已存在于某处,我将非常感谢任何可以指出我正确方向的人.

好的,到了这一点.

我正在编写一个用于监控互联网连接的监视应用程序.它设计为以设定的间隔对一组域进行ping操作,当它们中的任何一个响应ping时,状态定时器将被重置.如果状态计时器超过设定的阈值,则尝试多个纠正措施阶段来解决问题.

够简单吧?

这就是它变得奇怪的地方.

我正在使用ICMPsendecho发出ping请求.在我的开发环境(win7)上,它似乎工作正常,测试并且一切顺利.但是,在部署它的环境中,它无法收到响应.部署环境是Windows XP sp3机器.

在整个故障排除过程中,我注意到了一些事情,这些事情可能会或可能没有帮助实际解决这个问题.

windows ping.exe在我用于测试连接状态的所有域的部署环境中工作正常,它只有我的ICMPsendecho调用似乎无法生成响应.

我在部署环境中安装了wireshark,我可以看到两种类型的ping请求成功发出数据包.windows ping生成长度为74字节的请求数据包,我的程序调用生成长度为42字节的数据包.Windows响应数据包在接收时类似于74个字节.

安装wireshark后,切换到开发环境一分钟.Windows ping会在包含部署环境时生成类似的情况.但是,我的应用程序在生成请求时,数据包长度为42个字节(与部署环境相同),但它收到的响应长度为60个字节.

正如我所说,这些信息可能有用,也可能没有用,但我试图找出为什么这个应用程序无法生成ICMP响应,因为Windows ping似乎在该机器上正常工作.

可能有帮助的另一个小小的问题,互联网连接正在监控使用AT&T提升4g热点,实际设备是sierra无线MC8790 AirPrime卡.

谁有任何关于为什么这些ping失败的想法?

提前感谢您提供的任何有用信息,并花时间阅读我的帖子.

PS.

delphi networking ping icmp

8
推荐指数
1
解决办法
6731
查看次数

在delphi中创建/销毁虚拟类

这是我在这里发表的第一篇文章,但我要感谢社区,因为我已经无数次地找到解决问题的方法来到这里并在一个已经回答的问题中找到解决方案.

话虽如此,我想谈谈这一点.我在Code Gear的Delphi 2007 IDE中工作.我还是刚开始在德尔福工作的新手,准确地说还不到3个月,所以请记住这一点,因为我可能会遗漏一些基本的东西.

首先,我想就问题提供一些背景知识.我正在编写一个调度实用程序,用于在特定时间执行任务.对于每个可用任务,有2个与该任务相关联的相关delphi帧.第一帧用于编辑特定于该任务的详细信息,第二帧用于在任务运行时显示运行时信息.

保留正在运行的任务列表,并在该实用程序的滚动框中,显示运行时信息的相应帧列表.在任务开始和结束时创建和销毁这些运行时帧.这让我想到了我的问题.

我使用虚拟类管理器来保存每个任务的可用显示和编辑框架列表,并根据需要动态创建它们.在运行期间,一切都运行正常,当应用程序实际关闭时,我看到了问题.

该程序在关闭时会抛出EAccessViolation异常.当我尝试使用IDE跟踪问题时,我的代码中实际上并不存在与问题相对应的行或操作.因此,它必须是在后台执行的一些清理功能的一部分.

我已经将它缩小到动态创建虚拟类帧的代码,因为当我将代码注释掉时它会很好地关闭.因此,这让我相信我没有执行与使用此类类创建相关的操作.

var
  tmpCCI: TComponentClassInfExt;
  tmpS: String;
  tc: TComponent;
  bf: TBaseactionedit;
...
begin
...
tc := tmpCCI.fComponentClass.Create(nil);
if tc is TBaseactionedit then
begin
  bf := TBaseActionEdit(tc);
  bf.name := tmpCCI.fComponentClass.classname+IntToStr(nameCount);
  bf.Visible := False;
  bf.parent := pnlActionEdit;
  bf.Align := alClient;
  bf.Visible := True;
end;
...
Run Code Online (Sandbox Code Playgroud)

这是我如何使用虚拟类管理器创建框架的摘录.当我们不再需要FreeAndNil时,我可以释放它们.我已尽最大努力确保在应用程序关闭之前我已正确释放任何实例,但显然我遗漏了一些东西.

那么有没有人有任何想法从这里调试这样的东西?

PS再一次我是新手,所以如果有什么我错过了,掩饰,或忘记添加,请告诉我.再次感谢您阅读我的帖子!

delphi virtual class creation object-destruction

5
推荐指数
1
解决办法
259
查看次数

标签 统计

delphi ×2

class ×1

creation ×1

icmp ×1

networking ×1

object-destruction ×1

ping ×1

virtual ×1