2011-05-06 45 views
3

我在閃存中創建了網絡故障排除工具。該設計將具有屏幕上的所有組件。我必須在一分鐘內對每個組件進行一次ping。我完成了設計部分。我需要用閃光燈或動作ping到網絡

請別人幫我如何在flash中ping一個web地址或IP。

我需要一個示例代碼..我使用Flash CS3

回答

3

你是什麼意思,你有屏幕上的所有組件,你必須在一分鐘內ping每個組件?

如果平安你的意思是一個應用程序,什麼檢查URL的時間響應,那麼你可以嘗試使用此代碼玩:

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嘗試加載url,並收聽響應。如果status200,那麼獲得了成功的「ping」。或者乒乓球。

另一方面,您可以隨時運行服務器端的ping程序,並使用flash進行控制。

如果您的意思是一個應用程序,例如上傳下載速度測試程序,它也是以類似的方式開始,而不是以Loader對象開始。

希望這會有所幫助。

編輯:

防止緩存出現了問題,你可以使用:

ldr.load(new URLRequest(url + "?rnd="+Math.random())); 

現在,此頁可能不會給回一個網站的具體內容,但可能不夠好,估計響應時間。用閃光燈。

總的來說,這可以清除緩存並每次加載站點以獲得更好的結果。

+2

如何緩存?瀏覽器可能只是第二次提供緩存響應。 – alxx 2011-05-06 08:32:43

+0

+1:太棒了。 – anemgyenge 2011-05-06 08:37:24

+0

@anemgyenge:組件意味着各種交換機,路由器的圖片..如果它們連接鬆動,它們將開始閃爍紅色 – 2011-05-06 09:55:58

5

總之,你不能。

更長時間:您將無法ping通,因爲ping實際上是一個ICMP數據包,我不相信Flash可以發送這些數據。如果您嘗試ping機器上運行某些UDP或TCP服務,並且機器正在運行socket policy server,那麼您將能夠使用Socket類直接連接到該服務(可能會像一個ping)。

+0

很好的回答。 +1 – Marty 2011-05-06 07:03:00

+0

但是,這些人如何在www.speedtest.net上開發一個應用程序來檢查使用閃存程序的速度和連接性。有其他選擇嗎? – 2011-05-06 07:07:36

+1

@ Chandu-Indyaah:你可以從閃存應用程序發送請求到服務器,使其ping所需的地址,然後服務器將響應結果。 – alxx 2011-05-06 07:38:26