0

Androidですべてのネットワークを計算したり、特定のネットワークパケット損失を計算したりするにはどうすればよいですか?

4

2 に答える 2

1

Robertの答えを拡張するために、UDPは、セッション、順序どおりの配信、またはエラー検出の概念を持たないデータグラムのベストエフォート配信プロトコルです。エラー検出が必要な場合は、おそらくTCPの多くを実装することになります(少なくとも、シーケンス番号、チェックサム、および確認応答)。

幸い、TCPの場合、カーネルは詳細な統計を追跡します。ここでは、標準のipユーティリティが役立ちます。私のSGS2では、ユーティリティは完全であり、のように削減されていませんifconfig

使用例:

root@android:/etc # ip -s -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    23692      410      0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    23692      410      0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
2: gannet0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1000 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 72:e0:e5:0a:dc:d6 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
3: sit0: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN 
    link/sit 0.0.0.0 brd 0.0.0.0
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        59      0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
4: ip6tnl0: <NOARP,UP,LOWER_UP> mtu 1452 qdisc noqueue state UNKNOWN 
    link/tunnel6 :: brd ::
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        62      62      0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
5: rmnet0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ppp 
    RX: bytes  packets  errors  dropped overrun mcast   
    1410177    2037     0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    199870     1831     0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
6: rmnet1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ppp 
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
7: rmnet2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ppp 
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      

私の電話は根付いていますが、それは絶対に必要条件ではありません。

于 2012-05-10T15:50:07.980 に答える
0

TCPの場合、Linuxレベルでは値を取得できる可能性がありますが、Java/Androidレベルでは取得できない可能性があります。

UDPの場合、パケット損失の検出に使用できるデータが含まれていないため、不可能です。UDPレベルでデータ損失を計算する場合は、独自のUDPベースのプロトコルを実装し、たとえばパケットカウンターを含める必要があります。ただし、これでは、一般的なレベルではなく、独自のプロトコルのパケット損失のみを計算できます。

于 2012-05-10T13:52:27.053 に答える