Suivi des statistiques réseau d'une application (netstats) à l'aide d'ADB
J'ai le sentiment que c'est possible, je ne suis pas tout à fait sûr où l'information est détenue.
Je veux obtenir le haut/bas de la statistique pour des applications spécifiques, mais je veux le faire à l'aide de la BAD et non pas wireshark ou netty.
Je sais que je peux voir la vmData à l'aide de
adb shell
cd proc
cd pid#
cat status
et je sais que je peux voir la netstats à l'aide de:
ADB Shell dumpsys netstats details full
qui me donne ces résultats:
Dev stats:
Pending bytes: 1410076
Complete history:
ident=[[type=MOBILE, subType=COMBINED, subscriberId=310260...]] uid=-1 set=ALL tag=0x0
NetworkStatsHistory: bucketDuration=3600000
bucketStart=1349211600000 activeTime=3600000 rxBytes=19656154 rxPackets=16897 txBytes=615620 txPackets=8084 operations=0
bucketStart=1349215200000 activeTime=3600000 rxBytes=28854708 rxPackets=23363 txBytes=1037409 txPackets=12206 operations=0
bucketStart=1349218800000 activeTime=3600000 rxBytes=1839274 rxPackets=1565 txBytes=89791 txPackets=914 operations=0
bucketStart=1349222400000 activeTime=3600000 rxBytes=17421 rxPackets=88 txBytes=18376 txPackets=95 operations=0
bucketStart=1349226000000 activeTime=3600000 rxBytes=506966 rxPackets=788 txBytes=96491 txPackets=859 operations=0
Malheureusement, cela ressemble à un combiné netstat qui ne fait pas de distinction entre les applications.
Donc ma question, est-il un moyen pour voir le trafic réseau unique PID#'s ou des noms d'application, simplement à l'aide de l'invite de commande?
MODIFIER
Bien je me suis fait de bons progrès
Avec ce code
adb shell cat proc/1638(thePID)/net/dev > C:\netstats.txt
Je peux obtenir cette information:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 3564 28 0 0 0 0 0 0 3564 28 0 0 0 0 0 0
dummy0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
rmnet0: 117062940 191775 0 0 0 0 0 0 19344640 177574 0 0 0 0 0 0
rmnet1: 2925492 5450 0 0 0 0 0 0 1448544 5664 0 0 0 0 0 0
rmnet2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
rmnet3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
rmnet4: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
rmnet5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
rmnet6: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
rmnet7: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
vip0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Malheureusement, après une double vérification de ces chiffres, avec des programmes comme "Utilisation du Réseau" à partir de l'android market place, j'ai découvert que ces chiffres sont le total haut et vers le bas à travers l'ensemble du dispositif.
Donc ça me laisse encore avec, comment/où diable sont des programmes comme "Utilisation du Réseau" et "Pièces de Rechange" pour obtenir leurs informations?
source d'informationauteur Nefariis
Vous devez vous connecter pour publier un commentaire.
Bien j'ai compris où "pièces de rechange" et "Net d'Utilisation de la" tirent leurs informations de.
Le Problème que je vois avec la façon dont ils le font c'est que cela ne représente que TCP utilisation et ne prend pas en compte et UDP utilisation.
La seule façon de déterminer le niveau total tx_bytes et rx_bytes est grâce à cette commande.
ou si vous voulez convertir un fichier texte et de les consulter plus facilement.
Cela vous donne quelque chose qui ressemble à ceci:
Le quatrième onglet plus (1000, 10001, etc) est le numéro d'UID. La meilleure façon de savoir ce que l'application appartient à ce numéro d'UID est:
Aller vers le "Forfait" de la section, puis de sa première ligne après le nom du processus marqué "userid=".
Maintenant de lire le graphique ci-dessus, les deux principaux numéros que vous voulez savoir sont le 6ème numéro (le rx_bytes) et le 8e numéro (le tx_bytes). Ces deux nombres doivent être une représentation exacte de tous les octets dans et à l'extérieur, pour toute demande particulière.
Profiter.
L'ajout d'un extrait de Nefarii du commentaire, de la façon la plus simple pour trouver l'UID pour une application particulière, par exemple, com.exemple.myapp, est:
adb shell dumpsys package com.example.myapp | grep userId=