2010-03-15 9 views
6

Sé que una simple URLConnection a google puede detectar si estoy conectado a internet, después de todo, estoy seguro de que Internet está bien y bien si no puedo conectarme a google. Pero lo que estoy buscando en este momento es una biblioteca que pueda medir qué tan efectiva es mi conexión a internet en términos de AMBOS capacidad de respuesta y ancho de banda disponibles. PERO, no quiero medir la cantidad de ancho de banda disponible, ya que eso requiere demasiados recursos. Realmente necesito poder probar si puedo o no puedo recibir algo así como X kB en Y cantidad de tiempo. ¿Esa biblioteca ya existe?Java: ¿Alguien sabe de una biblioteca que detecta la calidad de una conexión a Internet?

Respuesta

2

No es posible realmente juzgar esto. En el mundo actual de ADSL 2+ con 20 velocidades de descarga de Mb/s, en gran medida se rige por la velocidad de todo lo anterior. Entonces, si te estás conectando a un sitio en otro país, por ejemplo, el principal cuello de botella es probablemente el enlace internacional. Si está conectado a un sitio en la misma ciudad que usted, probablemente esté limitado por la velocidad del enlace ascendente de ese servidor (por ejemplo, podrían ser de 10 MB/s y atenderán a muchas personas a la vez).

Así que la respuesta a la pregunta "¿Puedo recibir X KB en un máximo de Y segundos?" Depende completamente de donde está descargando. Y, por lo tanto, la mejor manera de responder esa pregunta es comenzar a descargar desde donde sea que esté planeando descargar, y luego cronometrarlo.

En términos de capacidad de respuesta, es básicamente la misma pregunta. Puede hacer un ping ICMP al servidor en cuestión, pero muchos servidores tendrán firewalls que eliminan los paquetes ICMP sin responder, por lo que no es exactamente exacto (además, si ping es mucho menor que ~ 100ms, entonces la mayor contribución a la latencia probablemente llegue desde el procesamiento interno del servidor, no la red real, lo que significa que un ping ICMP sería inútil de todos modos).

Esto es cierto en general de las características de la red, e Internet en particular (porque es muy complejo), no se puede medir nada confiablemente sobre el sitio X e inferir algo sobre el sitio Y. Si desea saber qué tan rápido Y responderá, luego solo tiene que conectarse al sitio Y y comenzar a descargar.

+0

Erm, hay áreas en el mundo en las que estarías muy contento si puedes permitirte una conexión estable de 1Mbit;) – BalusC

+0

Simplemente me contentaría con abrir un flujo de entrada, asegurándome de que x kB se leyeran en tiempo Y, luego informando éxito o fracaso. Esto para mí demuestra que la conexión a Internet en la que estoy es confiable ya que a veces, algunos ISP tendrán estos pequeños episodios en los que están conectados a Internet (las conexiones TCP se abren), pero prácticamente no hay o MUY pocos datos sobre la tubería. Eso es TODO lo que necesito verificar, muy básico. Aunque una buena biblioteca repetiría esta prueba y promediarla para servidores confiables en diferentes backbone de ISP (p. Ej .: level3.red, alguna otra columna vertebral, etc.) – Zombies

+0

@BalusC: Como australiano, ciertamente entiendo lo que quieres decir allí. Solo digo que no puede hacerlo * en general * porque hay un número significativo de personas cuyas características upstream superan con creces el máximo "teórico" del enlace local. @Zombies: Ah, ahora entiendo. No sé de una biblioteca así, pero no debería ser difícil hacerlo tú mismo. –

0

Calcular la capacidad del usuario para descargar de forma confiable un número determinado de bits en un período de tiempo determinado puede ser complejo, pero puede comenzar con parte del código que se encuentra en http://commons.apache.org/net/. Eso puede decirle latencia y ancho de banda, de todos modos.

0

La respuesta puede ser incorrecta un milisegundo (sustituya cualquier otro período) después de haberla medido.

Mire cualquier aplicación que le proporcione una figura de "tiempo de descarga restante". Tenga en cuenta que generalmente es incorrecta y/o se actualiza continuamente, y solo se vuelve precisa en el último segundo.

Básicamente, tanto cambio es inevitable sobre cualquier red razonablemente compleja, como Internet, que la única medida real solo está disponible después del hecho.

Cuestiones relacionadas