Java: Кто-нибудь знает библиотеку, которая определяет качество интернет-соединения? - PullRequest
6 голосов
/ 16 марта 2010

Я знаю, что простой URLCподключение к Google может обнаружить, если я подключен к Интернету, в конце концов, я уверен, что с интернетом все в порядке, если я не могу подключиться к Google. Но то, что я ищу на данном этапе, - это библиотека, которая может измерить, насколько эффективно мое подключение к Интернету с точки зрения ОБА отзывчивости и пропускной способности. НО , я не хочу измерять, какая пропускная способность потенциально доступна, так как она слишком ресурсоемкая. Мне действительно просто нужно иметь возможность тестировать, могу ли я получить что-то вроде X kB за Y количество времени. Такая библиотека уже существует?

Ответы [ 3 ]

2 голосов
/ 16 марта 2010

На самом деле невозможно судить об этом. В современном мире ADSL 2+ со скоростью загрузки 20 с лишним Мбит / с вы в значительной степени зависите от скорости всего, что находится перед вами. Так, например, если вы подключаетесь к сайту в другой стране, основным узким местом является, вероятно, международная ссылка. Если вы подключены к сайту в том же городе, что и вы, то вы, вероятно, ограничены скоростью восходящей линии связи этого сервера (например, они могут составлять 10 МБ / с, и они будут обслуживать множество людей одновременно).

Таким образом, ответ на вопрос «могу ли я получить X КБ максимум за Y секунд» полностью зависит от , откуда вы скачиваете. И поэтому лучший способ ответить на этот вопрос - начать загрузку с того места, где вы планируете его загружать, а затем рассчитать время.

С точки зрения отзывчивости, это в основном тот же вопрос. Вы можете выполнить ICMP-пинг для рассматриваемого сервера, но многие серверы будут иметь брандмауэры, которые отбрасывают ICMP-пакеты без ответа, поэтому это не совсем точно (кроме того, если пинг намного меньше, чем ~ 100 мс, то, вероятно, самый большой вклад в задержку из внутренней обработки сервера, а не из реальной сети, что означает, что пинг ICMP в любом случае будет бесполезен).

Это относится в целом к ​​характеристикам сети - и к Интернету в частности (потому что он очень сложный) - вы не можете надежно измерить что-либо о сайте X и сделать какие-либо выводы о сайте Y. Если вы хотите знать, насколько быстро сайт Y ответит, тогда вам просто нужно подключиться к сайту Y и начать загрузку.

0 голосов
/ 22 марта 2010

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

Посмотрите на любое приложение, которое дает вам цифру «оставшегося времени загрузки». Обратите внимание, что в общем случае оно некорректно и / или постоянно обновляется и становится точным только в последнюю секунду.

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

0 голосов
/ 22 марта 2010

Вычисление способности пользователя надежно загружать определенное количество бит за определенный промежуток времени может быть сложным, но вы можете начать с некоторого кода, найденного в http://commons.apache.org/net/., который может указать вам задержку и пропускную способность во всяком случае.

...