查看android路由表

linux查看路由表可用route命令,

android不识别route命令,可用ip route查看android路由表

# ip route
192.168.125.0/24 dev wlan0  proto kernel  scope link  src 192.168.125.35


# ip route help
Usage: ip route { list | flush } SELECTOR
       ip route save SELECTOR
       ip route restore
       ip route showdump
       ip route get ADDRESS [ from ADDRESS iif STRING ]
                            [ oif STRING ] [ tos TOS ]
                            [ mark NUMBER ] [ uid NUMBER ]
       ip route { add | del | change | append | replace } ROUTE
SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]
            [ table TABLE_ID ] [ proto RTPROTO ]
            [ type TYPE ] [ scope SCOPE ]
ROUTE := NODE_SPEC [ INFO_SPEC ]
NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]
             [ table TABLE_ID ] [ proto RTPROTO ]
             [ scope SCOPE ] [ metric METRIC ]
INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...
NH := [ encap ENCAPTYPE ENCAPHDR ] [ via [ FAMILY ] ADDRESS ]
	    [ dev STRING ] [ weight NUMBER ] NHFLAGS
FAMILY := [ inet | inet6 | ipx | dnet | mpls | bridge | link ]
OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ as [ to ] ADDRESS ]
           [ rtt TIME ] [ rttvar TIME ] [ reordering NUMBER ]
           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]
           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]
           [ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]
           [ features FEATURES ] [ quickack BOOL ] [ congctl NAME ]
           [ pref PREF ] [ expires TIME ]
TYPE := [ unicast | local | broadcast | multicast | throw |
          unreachable | prohibit | blackhole | nat ]
TABLE_ID := [ local | main | default | all | NUMBER ]
SCOPE := [ host | link | global | NUMBER ]
NHFLAGS := [ onlink | pervasive ]
RTPROTO := [ kernel | boot | static | NUMBER ]
PREF := [ low | medium | high ]
TIME := NUMBER[s|ms]
BOOL := [1|0]
FEATURES := ecn
ENCAPTYPE := [ mpls | ip | ip6 ]
ENCAPHDR := [ MPLSLABEL ]


# ip
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | address | addrlabel | route | rule | neighbor | ntable |
                   tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
                   netns | l2tp | fou | tcp_metrics | token | netconf }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec |
                    -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
                    -4 | -6 | -I | -D | -B | -0 |
                    -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                    -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                    -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}

ip link list //显示链路

ip address show //显示地址

ip route show //显示路由

ip neigh show //显示ARP映射表

ip neigh delete [IP] dev [dev]  //删除ARP缓存

ip rule list //显示路由表规则优先级

ip route list table [table] //显示制定路由表

ip rule add from [IP] table [table name]  //增加新的路由表

ip route add [IP/defaulte] via [src IP] dev [dev] table [table name]   //为路由表增加表项

ip route flush cache   //刷新路由缓存

ip route add [IP/default] scope [scope/global] nexthop via [gateway] dev [dev] weight [weight] nexthop …… //负载均衡

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 Android 应用内读取路由表需要使用系统权限,因此需要在 AndroidManifest.xml 文件中添加以下权限: ``` <uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY"/> ``` 然后可以使用 ConnectivityManager 类的 getAllNetworks() 方法获取所有网络连接,并通过 Network 类的 getLinkProperties() 方法获取网络连接的路由表信息,示例如下: ```java ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); Network[] networks = connectivityManager.getAllNetworks(); for (Network network : networks) { LinkProperties linkProperties = connectivityManager.getLinkProperties(network); for (RouteInfo routeInfo : linkProperties.getRoutes()) { Log.d(TAG, "Route: " + routeInfo.toString()); } } ``` 需要注意的是,此方法需要 Android 6.0 及以上版本支持。 ### 回答2: 在 Android 应用内读取路由表,可以通过使用系统级别的API来实现。 首先,需要获取网络信息的权限,在 AndroidManifest.xml 文件中添加以下代码: ```xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> ``` 然后,在代码中使用 ConnectivityManager 类来获取网络信息,并利用 NetworkInfo 类获取路由表信息。以下是示例代码: ```java ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = connectivityManager.getActiveNetworkInfo(); if (activeNetwork != null && activeNetwork.isConnected()) { if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { // WiFi网络 // 获取路由表信息 DhcpInfo dhcpInfo = connectivityManager.getDhcpInfo(); String gateway = Formatter.formatIpAddress(dhcpInfo.gateway); String subnetMask = Formatter.formatIpAddress(dhcpInfo.netmask); // 其他路由表信息... } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { // 移动网络 // 获取路由表信息 // ... } } ``` 上述代码首先通过 ConnectivityManager 的 getActiveNetworkInfo() 方法获取当前活动网络的信息,再通过 getType() 方法判断网络类型。如果是 WiFi 网络,则可以通过 getDhcpInfo() 方法获取路由表信息。以网关(gateway)和子网掩码(subnetMask)为例,使用 Formatter 类的 formatIpAddress() 方法将其转换为 IP 地址格式。 当然,以上示例仅仅是演示了如何在 Android 应用内读取路由表的基本步骤。根据实际需求,可能还需要处理一些网络状态的变化,或者通过其他更高级的 API 获取更详细的路由表信息。 ### 回答3: 在Android应用内读取路由表,可以使用以下方法: 1. 使用Java的NetworkInterface类获取设备的网络接口信息。通过NetworkInterface类的getNetworkInterfaces()方法可获取设备所有的网络接口,并使用NetworkInterface类提供的其他方法,如getInetAddresses()获取网络接口的IP地址等。 2. 使用Java的Process类执行shell命令,通过执行"ip route show"命令获取设备的路由表信息。可以使用ProcessBuilder类创建一个包含命令的进程,并通过Process类的getInputStream()方法获取命令执行的输入流,再通过读取输入流的方式获取命令的输出结果。 3. 使用Android的ConnectivityManager类获取设备的网络连接信息。通过ConnectivityManager类的getActiveNetworkInfo()方法获取当前活跃的网络连接对象,再使用该连接对象的getRouteInfo()方法获取网络连接的路由信息。 需要注意的是,以上方法需要在AndroidManifest.xml文件中添加相应的权限,如"android.permission.ACCESS_NETWORK_STATE"权限以获取网络连接信息。 希望以上方法能够帮助您在Android应用内读取路由表
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值