Comment détecter une vitesse de connexion Internet avec Java?
Dans mon application Java, comment puis-je déterminer la vitesse la vitesse de connexion à Internet ? Par exemple, j'utilise AT&T Rapide DSL à la maison, je me demande si il ya une manière que je peux écrire une méthode qui effectue les opérations suivantes :
int getInternetConnectionSpeed()
{
...
}
Qui renvoie un nombre en kbps, quelque chose comme 2800kbps [ 2,8 M ]
Edit :
La raison pour laquelle je me demande, est dans mon application, je peux ouvrir plusieurs flux Internet, selon les utilisateurs de l'Internet de la vitesse de connexion, je veux qu'elle s'auto déterminer la façon dont de nombreux cours d'eau pour l'ouvrir sans calage de l'application.
Je pense que pour ce réellement le travail, vous devez avoir un serveur à l'autre extrémité de votre test, qui peut gérer des vitesses plus élevées que la maxmimum limite de votre AT&T de connexion...
Même si vous pourriez obtenir le "officielle" de la vitesse de connexion pour l'utilisateur d'internet, ce nombre serait largement imprécis pour la plupart des scénarios du monde réel. Peut-être vous devriez revoir exactement pourquoi vous avez besoin de cette information et de trouver un autre moyen de faire ce qu'il est que vous êtes vraiment essaie de faire.
Sont votre "flux" de la bande passante limitée, ou vous vous retrouvez avec 1 stream telechargement aussi vite que possible vs 10 flux de téléchargement la plus rapide possible (dans ce cas, vous avez à peine gagner quoi que ce soit)
Basé sur votre montage, je dirais que votre meilleur pari est de laisser le utilisateur configurer le nombre de flux parallèles à utiliser. Je suppose que vous êtes en train de faire une certaine forme de partage de fichiers de l'app? Comment vous sentiriez-vous si BitTorrent automatiquement choisir comment de nombreux sortants ou les connexions entrantes, il permettrait?
Je suis d'accord !
Même si vous pourriez obtenir le "officielle" de la vitesse de connexion pour l'utilisateur d'internet, ce nombre serait largement imprécis pour la plupart des scénarios du monde réel. Peut-être vous devriez revoir exactement pourquoi vous avez besoin de cette information et de trouver un autre moyen de faire ce qu'il est que vous êtes vraiment essaie de faire.
Sont votre "flux" de la bande passante limitée, ou vous vous retrouvez avec 1 stream telechargement aussi vite que possible vs 10 flux de téléchargement la plus rapide possible (dans ce cas, vous avez à peine gagner quoi que ce soit)
Basé sur votre montage, je dirais que votre meilleur pari est de laisser le utilisateur configurer le nombre de flux parallèles à utiliser. Je suppose que vous êtes en train de faire une certaine forme de partage de fichiers de l'app? Comment vous sentiriez-vous si BitTorrent automatiquement choisir comment de nombreux sortants ou les connexions entrantes, il permettrait?
Je suis d'accord !
OriginalL'auteur Frank | 2010-11-08
Vous devez vous connecter pour publier un commentaire.
Je pense que l'on pourrait penser le problème dans le mauvais sens. Prendre un instantané d'une vitesse de connexion est seulement une indication de leur rendement à cet instant dans le temps. Ils pourraient assez facilement être en cours d'exécution d'une autre application lorsque vous exécutez le test qui suce leur bande passante et puis vos valeurs mesurées sont sans valeur.
Au lieu de cela, je pense que vous devez être constamment en ajoutant ou en supprimant des fils selon qu'il augmente ou diminue leur débit. Je proposerais quelque chose comme ceci (pseudo-code):
Vous pouvez jouer avec le sommeil des horaires à convenir. Je suppose ici que
getCurrentSpeed()
retourne le débit de tous télécharger threads et que vous êtes capable dynamique d'ouvrir et de fermer les threads lors de votre application d'exécution.Vous voudrez probablement utiliser un pool de threads pour gérer les threads.
OriginalL'auteur Catchwa
De temps combien de temps cela vous prend pour télécharger un fichier de connu et suffisamment grande) taille.
S'il vous faut des années 60 à télécharger de 10 mo, vous avez un (10 * 1024 * 8 /60) Kbit /s ou 1365 Kbps connexion.
...ouais, ce Randolpho dit.
Vous serait-il faire pour que le serveur qui vous serait de communiquer avec. Toutes les autres vitesses de liaison ne sont pas pertinents.
Je suis d'accord, mais comme je l'ai souligné, l'original, le demandeur a voulu le lien au niveau de la vitesse -- quelque chose que personne ne de l'écriture d'un non-conducteur doivent se préoccuper.
OriginalL'auteur Reese Moore
Mais il y a beaucoup de vitesses selon l'endroit où vous souhaitez vous connecter:
Depuis votre JVM utilise le PC local, qui utilise le réseau local il n'y a aucun moyen d'obtenir la vitesse DSL automatiquement.
Oh, et remarquez, vous pourriez même être en surf longue distance!
OriginalL'auteur Daniel