2012-05-10 24 views

回答

0

對於TCP,可能有可能獲取Linux級別的值,但不能在Java/Android級別獲取值。

對於UDP,這是不可能的,因爲沒有可用於檢測數據包丟失的數據。如果你想計算UDP層面上的數據丟失,你必須實現你自己的基於UDP的協議,並且包括例如數據包計數器。但是,這將允許您僅爲自己的協議計算數據包丟失,而不是在一般水平上。

1

爲了擴展Robert的回答,UDP是一個數據報盡力而爲的傳送協議,沒有任何會話,按序傳送或錯誤檢測的概念。如果你想檢測錯誤,你可能會實現很多TCP(至少,序列號,校驗和和確認)。

幸運的是,對於TCP,內核跟蹤詳細的統計數據。標準ip實用程序應該在這裏有所幫助。在我的SGS2上,該實用程序是完整的,並不像ifconfig那樣減少。

用法示例:

[email protected]:/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  

我的手機紮根但是這絕對不是一個要求。

+0

如果我想在我的android應用程序中使用這些信息?有沒有辦法做到這一點? –

+0

是的,有。您可以運行'ip'實用程序,捕獲輸出並從中解析出您需要的內容。跨設備做會很痛苦(鏈接名稱改變,'ip'實用程序本身不是Android的一部分),但它看起來可能。 – Delyan