Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 在Android下利用Shell命令管理網絡接口

在Android下利用Shell命令管理網絡接口

編輯:關於Android編程

為啥要使用shell命令操縱本地網絡?因為這樣就可以繞過上層connectService來干一些事情,至於具體要干點什麼事情,容我先賣個關子在以後的blog裡說明。

首先進入adb shell,然後去Ping一個服務器的ip地址

ping 211.69.198.222
PING 211.69.198.222 (211.69.198.222) 56(84) bytes of data.
64 bytes from 211.69.198.222: icmp_seq=1 ttl=46 time=356 ms
64 bytes from 211.69.198.222: icmp_seq=2 ttl=46 time=294 ms
64 bytes from 211.69.198.222: icmp_seq=5 ttl=46 time=342 ms
64 bytes from 211.69.198.222: icmp_seq=6 ttl=46 time=341 ms
64 bytes from 211.69.198.222: icmp_seq=8 ttl=46 time=342 ms
64 bytes from 211.69.198.222: icmp_seq=9 ttl=46 time=330 ms
^C
--- 211.69.198.222 ping statistics ---
9 packets transmitted, 6 received, 33% packet loss, time 8025ms
我們發現是可以Ping通的。

接著我們通過ifconfig命令(雖然是閹割版)來將我的3g網絡接口關閉,隨後再打開,然後再去嘗試ping剛才的網絡地址。

# ifconfig rmnet0
rmnet0: ip 172.22.39.243 mask 255.255.255.248 flags [up broadcast running multicast]
# ifconfig rmnet0 down
# ping 211.69.198.222
connect: Network is unreachable
# ifconfig rmnet0 up
# ping 211.69.198.222
connect: Network is unreachable
# ping 211.69.198.222
connect: Network is unreachable
# ifconfig rmnet0
rmnet0: ip 172.22.39.243 mask 255.255.255.248 flags [up broadcast running multicast]
這時候我奇怪的發現通過ifconfig命令這麼一折騰,網絡接口出了問題,雖然ifconfig顯示我的rmnet0是打開的,但是卻無法ping通。

經過仔細的思考,我猜測是因為當你把網絡接口down掉之後,你的ip在路由器(基站?)上被釋放了,雖然顯示網絡是可用的,但是這時候的網絡是沒有配置有效IP的。


這時候通過netcfg rmnet0 dhcp 重新申請一個ip ,然後繼續Ping,不出所料,果然成功。

# netcfg rmnet0 dhcp
# ping 211.69.198.222
PING 211.69.198.222 (211.69.198.222) 56(84) bytes of data.
64 bytes from 211.69.198.222: icmp_seq=1 ttl=46 time=2743 ms
64 bytes from 211.69.198.222: icmp_seq=2 ttl=46 time=1747 ms
64 bytes from 211.69.198.222: icmp_seq=3 ttl=46 time=739 ms
64 bytes from 211.69.198.222: icmp_seq=4 ttl=46 time=98.9 ms
64 bytes from 211.69.198.222: icmp_seq=5 ttl=46 time=97.1 ms
^C
--- 211.69.198.222 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4015ms


結論:

通過Android Shell命令,完全可以繞開上層的網絡管理機制來控制網絡接口的狀態。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved