Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как сделать Ping? (http://www.flasher.ru/forum/showthread.php?t=131817)

andrey_x 29.10.2009 00:34

Как сделать Ping?
 
Возник вопрос.. как сделать PING, и получить время доступа к серверу ?

Методом:
Код AS3:

var req:URLRequest=new URLRequest("http://www.ya.ru");
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.OPEN, startLoad);
var time:Number = getTimer();
loader.load(req);
 
function startLoad(e:Event):void {
Alert.show("Результат: "+ getTimer()-time);
loader.close();
}

время получаю, но оно большое какое то, порядка 300-500 миллисекунд и выше, тогда как из командной строки команда ping ya.ru - дает 60-70 ..

так как же узнать время доступа к серверу?
на http://www.speedtest.net/ как-то сделали ведь...

gloomyBrain 29.10.2009 01:52

попробуйте сделать тот же тест, но
1) начинать его не при запуске приложения, а по клику
2) повторять его несколько раз

Код AS3:

package {
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
 
        /**
        * ...
        * @author gloomyBrain
        */

        public class Main extends Sprite {
 
                public var urlLoader:URLLoader;
                public var urlReq:URLRequest;
                public var iterator:uint;
                public var summaryTime:uint;
                public var startTime:uint;
                public var endTime:uint;
 
                public function Main():void {
 
                        iterator = 100;
                        summaryTime = 0;
                        urlLoader = new URLLoader();
                        urlReq = new URLRequest("http://ya.ru");
                        urlLoader.addEventListener(Event.OPEN, onLoadStart);
 
                        stage.addEventListener(MouseEvent.CLICK, startTest);
 
                }
 
                public function startTest(evt:Event):void {
 
                        testOnce();
 
                }
 
                public function testOnce():void {
 
                        startTime = new Date().getTime();
                        urlLoader.load(urlReq);
 
                }
 
                public function onLoadStart(evt:Event):void {
 
                        iterator--;
 
                        if(iterator > 0){
                                urlLoader.close();
                                endTime = new Date().getTime();
                                var ping:uint = endTime - startTime;
                                trace(ping);
                                summaryTime += ping;
                                testOnce();
                        }else {
                                trace("average ping: "+uint(summaryTime/100));
                        }
 
                }
 
        }
 
}


Котяра 29.10.2009 10:55

Не 100%, моё личное ИМХО: событие Event.OPEN отсылается не сразу а на следующий фрейм, отсюда и задержка по времени.

gloomyBrain 29.10.2009 13:42

Цитата:

а на следующий фрейм
Ну а как этого избежать?

Потестировал, в FP9 и FP10 результаты одинаковые
А вот если поменять частоту кадров на 120 (вместо 30 по дефолту) - пинг меняется с 32 до 11
к слову, пинг из командной строки у меня выдает 11
То есть, уже близко к истине =)

andrey_x 29.10.2009 19:36

gloomyBrain, ну у меня тоже вызывалось по клику, я просто не весь код привел..

да, многоразовый опрос - это вещ.

и интересная идея с кадрами и FPS .. надо будет опробовать) отпишусь)

dsQuadro 29.10.2009 19:39

мне кажется яндекс тебе выдает время обработки твоего запроса сервером, без учета времени подключения к нему... для проверки используй firebug...

andrey_x 29.10.2009 20:23

поигрался с FPS , непомогло.. при FPS 30 пинг был 180 .. при 120 - около 180 .. поставил снова FPS 30 - пинг стал 8-10 ... при том что виндовый ping ya.ru - 48 выдает..

gloomyBrain, а можешь прислать исходник?
dsQuadro, да тут .. непонятно.. и другие сайты тестирую, пинг себя вообще непредсказуемо ведет =(

gloomyBrain 30.10.2009 00:20

какой исходник? Я выложил код, которым тестировал =))

Gaen 30.10.2009 03:37

Сокеты вам в помощь

gloomyBrain 30.10.2009 03:49

Интересно, как Вы будете открывать сокет с Яндексом?


Часовой пояс GMT +4, время: 14:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.