我在flash中创建了一个网络故障排除工具。该设计将在屏幕上显示所有组件。我必须在每分钟ping一次。我完成了设计部分。
请有人帮我解决如何在Flash中ping网页地址或IP。
我需要一个示例代码..我正在使用Flash CS3
答案 0 :(得分:5)
简而言之,你不能。
更长时间:你将无法ping通,因为ping实际上是一个ICMP数据包,我不相信Flash可以发送它们。如果您尝试ping的计算机上正在运行某些UDP或TCP服务,并且该计算机正在运行socket policy server,那么您将能够使用Socket类直接连接该服务(可能像ping一样)。
答案 1 :(得分:4)
你是什么意思,你拥有屏幕上的所有组件,你必须在一分钟内ping每个组件?
如果通过ping你的意思是一个应用程序,什么检查网址的时间响应,那么你可以尝试使用这个代码:
var ldr:URLLoader = new URLLoader();
ldr.addEventListener(HTTPStatusEvent.HTTP_STATUS, ldrStatus);
var url:String = "URL-TO-SITE";
var limit:int = 10;
var time_start:Number;
var time_stop:Number;
var times:int;
ping();
function ping():void
{
trace("pinging", url);
times = 0;
doThePing();
}
function doThePing():void
{
time_start = getTimer();
ldr.load(new URLRequest(url));
}
function ldrStatus(evt:*):void
{
if(evt.status == 200)
{
time_stop = getTimer();
trace("got response in", time_stop - time_start, "ms");
}
times++;
if(times < limit) doThePing();
}
这没什么特别的,URLLoader
尝试加载网址,并监听响应。如果status
为200
,则成功“ping”。或者乒乓球。
另一方面,您始终可以运行服务器端ping程序,并使用flash控制该程序。
如果你的意思是一个应用程序,比如上传 - 下载 - 速度测试仪,也是从这样的东西开始,而是用Loader对象。
希望这有帮助。
编辑:
防止缓存问题,您可以使用:
ldr.load(new URLRequest(url + "?rnd="+Math.random()));
现在,此页面可能无法返回网站的确切内容,但可能足以估算响应时间。随着闪光灯。
总的来说,这可以清除缓存并每次加载网站以获得更好的结果。