I have a feeling this is possible, I'm just not quite sure where the information is held.
I want to get the up/down statistics for specific applications, but I want to do it using ADB and not wireshark or netty.
I know I can see the vmData using
adb shell
cd proc
cd pid#
cat status
and I know I can see the netstats using:
ADB Shell dumpsys netstats details full
which gives me these results:
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
Unfortunately this looks like a combined netstat that does not differentiate between applications.
So my question, is there a way to see network traffic by unique PID#'s or application names, by simply using the command prompt?
EDIT
Alright I made some good strides
With this code
adb shell cat proc/1638(thePID)/net/dev > C:\netstats.txt
I can get this 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
Unfortunately after double checking these numbers with programs like "Network Usage" from the android market place, I discovered that these numbers are the total up and down across the entire device.
So it still leaves me with, how/where the heck are programs like "Network Usage" and "Spare Parts" getting their information from?
Well I figured out where "spare parts" and "Net Usage" get their information from.
The Problem I see with how they are doing it though is that this only accounts for TCP usage and does not account for and UDP usage.
The only way to figure out the total tx_bytes and rx_bytes is through this command.
or if you would like to convert it to a text file and view it easier.
This gives you something that looks like this:
The fourth tab over (1000, 10001, etc) is the UID number. The easiest way to find out what application belongs to what UID number is:
Go down to the "Package:" section, and then its the first line down after the process name labeled "userid=".
Now to read the above chart, the main two numbers that you want to know are the 6th number in (the rx_bytes) and the 8th number in (the tx_bytes). Those two numbers should be an accurate portrayal of all the bytes in and out, for any particular application.
Enjoy.
Adding a snippet to Nefarii's comment, the easiest way to find out the UID for a particular application, e.g., com.example.myapp, is:
adb shell dumpsys package com.example.myapp | grep userId=