Самый быстрый способ протестировать интернет-соединение

Если вы не можете изменить html-структуру, в которой она находится, у меня будет решение.

Не самый лучший, я не рекомендую это, но здесь это идет:

position: absolute;

Это продолжается в div с классом .row, который содержит ваш текст. После абсолютной позиции вы должны использовать bottom: - something px и left: something px. Затем вы идете в свой div с id: social и генерируете padding-top: something px.

То, что я использовал, чтобы проверить это было:

Это на .row

position: absolute;
left: 450px;
bottom: -535px;

Это на #social

padding-top: 200px;

Как я уже сказал, это плохо практикуйтесь, и я не рекомендую это делать, но поскольку у вас нет доступа к html, это ваш выбор.

22
задан Yahia 9 February 2012 в 19:06
поделиться

4 ответа

Что программный телефон будет использовать для реальной связи? Это идет по HTTP / HTTPS на тот же веб-сайт? Если да, то это абсолютно правильный путь - следующий шаг - выяснить, почему это занимает так много времени.

Установлено ли сетевое соединение до того, как вы отправите запрос? Вы определенно не заранее делаете какие-либо запросы? Я спрашиваю, потому что замечаю, что вы не избавляетесь от ответа - если это произойдет и в другом месте, вы можете обнаружить, что сталкиваетесь с пулом соединений, который дает вам только пару подключений к определенному серверу. Мораль заключается в том, чтобы всегда помещал HttpWebResponse в оператор using . Конечно, это может быть , а не проблемой в вашем случае, но попробовать стоит.

Если ваше реальное приложение будет подключаться где-то еще, тогда ваш тест также должен проверить это. По сути, сделайте его как можно ближе к реальному.

Из интереса вы говорите, что это приложение для «программного телефона» - оно действительно работает на телефоне с некоторым описанием, используя компактную структуру , или это настольное приложение?

11
ответ дан 29 November 2019 в 05:00
поделиться

Попробуйте использовать P / Invoke для вызова InternetGetConnectedState . Это должно сказать вам, настроено ли у вас соединение. Затем вы можете попробовать проверить конкретное соединение с вашей службой с помощью InternetCheckConnection . Это (иногда) быстрее, чем прямое подключение, но я бы протестировал его, чтобы увидеть, лучше ли это, чем просто выполнить полное подключение заранее.

16
ответ дан 29 November 2019 в 05:00
поделиться

Вы можете ссылаться на пространство имен Microsoft.VisualBasic.Devices, чтобы использовать делегат NetworkAvailableEventHandler и класс Network. Я использую свойство Network.IsAvailable и событие Network.NetworkAvailabilityChanged, чтобы проверить, есть ли сеть (или она будет затронута позже), а затем выполняю HTTP GET на свой сервер, чтобы узнать, есть ли сервер.

Это помогает с отчетом о вопрос немного более конкретный, вместо «не вижу сеть».

2
ответ дан 29 November 2019 в 05:00
поделиться

У меня была аналогичная ситуация, когда мы собирались сделать вызов WCF для клиента, и это заняло бы слишком много времени, если бы клиент был недоступен (по какой-либо причине). Что я сделал, так это открыл необработанный TCP-сокет на адрес клиента ... Это быстро терпит неудачу, если клиент не прослушивает порт (в вашем случае порт 80), и быстро преуспевает, если они есть.

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

Это выглядит примерно так ...

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    try
    {
         IAsyncResult result = socket.BeginConnect("www.xxxxxxxxx.com", 80, null, null );
         //I set it for 3 sec timeout, but if you are on an internal LAN you can probably 
         //drop that down a little because this should be instant if it is going to work
         bool success = result.AsyncWaitHandle.WaitOne( 3000, true );

         if ( !success )
         {
                throw new ApplicationException("Failed to connect server.");
         }

         // Success
         //... 
    }
    finally
    {
         //You should always close the socket!
         socket.Close();
    }

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

6
ответ дан 29 November 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: