androidwifi和eth
1. Android eth0怎么转换成wlan
eth0,eth1,eth2……代表网卡一,网卡二,网卡三……
lo代表127.0.0.1,即localhost
wlan0代表无线网卡
在执行ifconfig 命令后,系统将在内核表中设置必要的参数,这样Linux 就知道如何与网络上的网卡通信。ifconfig 命令有以下两种格式:
※ifconfig [interface]
※ifconfig interface [aftype] option | address …
ifconfig 的第一种格式(或使用不带任何参数的ifconfig 命令)可以用来查看当前系统的网络配置情况。
在刚刚安装完系统之后,实际上是在没有网卡或者网络连接的情况下使用Linux,但通过ifconfig 可以使用回绕方式工作,使计算机认为自己工作在网络上。
现在我们运行一下ifconfig 命令,不带参数的ifconfig 命令可以显示当前启动的网络接口,其输出结果为:
[root@machine1 /sbin]#ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:AB:DD:6F:61
inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:46299 errors:0 dropped:0 overruns:0 frame:189
TX packets:3057 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xece0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
其中以eth0 为首的部分是本机的以太网卡配置参数,的设这里显示了网卡的设备名/dev/eth0 和硬件的MAC 地址52:54:AB:DD:6F:61, MAC 地址是生产厂家定的,每个网卡拥有的唯一地址。
不过我们可以手工改动网卡的MAC 地址,只要我们在/etc/rc.d/init.d/中的network 中加入:
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
Jiania 解说 注:
eth0,eth1,eth2,代表网卡一,网卡二,网卡三
hw 代表hardware 硬件意思
ether 代表ethernet 以太网的意思
然后重启,此时再用ifconfig 命令查看一下,我们就会发现网卡的MAC 地址已经变成xx:xx:xx:xx:xx:xx了。
ifconfig配置网卡
配置网卡的IP地址
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
在eth0上配置上192.168.0.1 的IP地址及24位掩码。 若想再在eth0上在配置一个192.168.1.1/24 的IP地址怎么办?用下面的命令
ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0
这时再用ifconifg命令查看,就可以看到两个网卡的信息了,分别为:eth0和eth0:0.若还想再增加IP,那网卡的命名就接着是:eth0:1、eth0:2……想要几个就填几个。ok!
配置网卡的硬件地址
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx就将网卡的硬件地址更改了,此时你就可以骗过局域网内的IP地址邦定了。
将网卡禁用
ifconfig eth0 down
将网卡启用
ifconfig eth0 up
ifconfig 命令的功能很强大,还可以设置网卡的MTU,混杂模式等。
2. 安卓4.4wifi开启命令
首先来分析一下为什么不能上网:Android 4.0系统目前仅支持通过wifi上网,x-86版也不例外,但是在VMware下木有wifi驱动,所以即使机子连着网,Android系统也上不去。解决方法:首先确定机子是处于联网状态的。
1、进入Android-x86的终端模拟器(相当于Win系统的命令提示符)。
2、输入命令“ip a”获取所有网卡配置如果可以发现eth0网卡,那么恭喜,系统已经认出了VM的虚拟网卡,可以继续看下面了。如果没发现这个eth0,那么还是将此系统删除,重新安装别的版本吧。Android-x86有好几个版本,我试验之后发现eeepc的版本对网卡的支持比较好。
3、用su命令获取最高权限。
4、为网卡指定ip、掩码、网关等信息。如果DHCP可用,则执行“dhcpcd eth0”自动获取,如果没有DHCP服务可用,则可以手动指定,命令是:su ifconfig eth0 192.168.10.250 netmask 255.255.255.0 up route add default gw 192.168.10.1 dev eth0。相信能看到本文此处的小盆友都能看明白,就不再解释了。4、设置dns。执行如下命令:setprop net.dns18.8.8.8,如果你不想用google的这个dns服务器,也可以使用本地的,不过要保证可用。至此,我们已经为凳旁eth0网卡配置了ip和dns信息,登录Android-x86,打开自带的浏览器,可以发现浏览网页已经木有问题了,但是想要下载某些软件的时候,还是无法下载,下载进度条会一直停止不动,一些枣蚂橡系统自带的服务(如地图)也仍然无法使用。这是因为系统只认wifi,没有wifi设备系统就认为没有上网,为以太网卡配置IP和DNS之后可以骗过浏览器,但是系统不认那一套,所以上网的问题只能是初步解决,希望有高手可以解决这个问题。(貌似网上已经有一位日本友人做出了VirtualBox虚拟机下的镜像,VMware下的还有待高手继续开发)另,看到有的网友提出了别的解决方案:通过“电子邮件”设置好自己的账户,然后在电脑上物运将需要安装的APK文件发给自己,在虚拟上打开收件箱就可以直接安装了。这倒是一种不错的解决方案。
3. android如何获取以太网mac地址
本仿前文讲述无线网和以太网mac地址获取的方法: 1.以太网获取mac地址 因为机顶盒系统是linux内核的,假设ethernet是eth0,那么可以从以下文件中读取相关信息:/sys/class/net/eth0/address方法1: public static String loadFileAsString(String filePath) throws java.io.IOException{ StringBuffer fileData = new StringBuffer(1000); BufferedReader reader = new BufferedReader(new FileReader(filePath)); char[] buf = new char[1024]; int numRead=0; while((numRead=reader.read(buf)) != -1){ String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); } reader.close(); return fileData.toString();}/** Get the STB MacAddress*/public String getMacAddress(){ try { return loadFileAsString("/sys/class/net/eth0/address") .toUpperCase().substring(0, 17); } catch (IOException e) { e.printStackTrace(); return null; }}方法2:NetworkInterface NIC = NetworkInterface.getByName("eth0"); byte[] buf = NIC.getHardwareAddress(); for (int i = 0; i < buf.length; i++) { mac = mac + byteHEX(buf);}if (mac != null && !"".equals(mac)) { }2.wifi获取mac和ip首先要在manifest.xml文件中添加权限闭晌: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>获取mac的代码如下WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress();获取Ip的代码public String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); if (intf.getName().toLowerCase().equals("eth0")) { for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { String ipaddress = inetAddress.getHostAddress().toString(); if(!ipaddress.contains("::")){//ipV6的地轿大锋址 return ipaddress; } } } } else { continue; } } } catch (Exception ex) { Log.e("WifiPreference IpAddress", ex.toString()); } return null; }
4. android virtual device manager怎么联网
用安卓系统自带的终端模拟器联网带念
这个需要用到安卓系统自带的终端模拟器,如果你虚拟机中的安卓是从谷歌上下的,那应该有终端模拟器,不过VM虚拟机笑李要联网的前提是你用的是以太网才行,无线网无法虚拟的进入终端模拟器,首先输入ipa回车,看一下出来的选项里面有没有eth0,如果没有的话,那就是缺失驱动了,我也没办法碰行迟了。如果有eth0那就好办了,输入su回车使终端模拟器获得root权限然后输入dhcpcdeth0使以太网自动取得IP最后一步,设定DNSServer,输入setpropnet.dns18.8.8.8然后你就可以用安卓自带的浏览器上网了
5. Android WiFi调试常用标签(Tag)
都知道的,要看Android log如果桥或伍不加过滤器,那么对应的信息量极其的庞大,要在这些大信息量找到我们关心的可能需要耗费比较长的时间,所以对于在调试WiFi过程,那些标签是需要关注的呢团搭?
WiFi的核心服务,是启动整个WiFi服务的,它在我们的logcat关注范围内
WiFi的扫描服务,一般我点开或者进入到WiFi列表页面里,这个服务在后台帮我们刷新热点,同样在logcat关敏或注的范围内
关于有线与WiFi的切换,以及系统关于网络的链接,它帮忙在管着事呢,所以也在logcat关注的范围内
系统网络相关的命令执行需要涉及到它,比如像Setting iface up 或者bring up eth0 这些事儿,它帮忙在处理,同样也在WiFi调试时logcat关注范围内
这个标签也是比较常用到,在hardware/libhardware_legacy/wifi/wifi.c里面,主要帮忙实现drv的加载/卸载,以及处理与wpa_supplicant之间相关事件的通信,常用于前期的WiFi Drv导入调试比较多,所以也在logcat关注范围内
这是一个类似链接的服务,一般用于 Tethering wlan0 或者 等等,可以帮忙辅助调试WiFi流程,也在logcat关注范围内
对于可以支持软件AP的WiFi Dongle设备来说,这是一个很关键的服务(工具),一般用来初始化设置软AP的参数(ssid、channel、psk、wpa、带宽等参数)详细具体可参考 hostapd.conf
WiFi中心处理枢纽,很多的WiFi状态处理都离不开它,所以也是在logcat需要关注的范围
它在系统网络有着重要的地位,因为其处理的业务包含了dns,路由控制表, dhcp相关等等,可以这么说,系统网络涉及到无法ping通一些特定的域名或者网站,可以来这里找找原因,所以它也在logcat关注范围内,其中该文件在/system/netd/server/TetherController.cpp,
一个神奇且强大的工具,集中了dns,dhcp,router等功能,它很适合在一些小网络(轻量级)架构发挥着强大的作用,详细可以参见 这里
可以看下它工作时打印
以上主要为调试WiFi 软AP常用的Tag
对应的logcat 命令如下
在切换到 Sta 状态时,我们需要重点关注wpa_supplicant对应的log
开启wpa_supplicant的log,只需要修改一个地方即可,在找到对应init.xx.rc启动wpa_supplicant进程,在启动前添加 -dd的参数(将wpa_supplicant log 级别设为debug)即可,后续关于wpa_supplicant调试会继续更新整理
6. Android 6.0 策略路由
实现648 Android 6.0端与410 Linux端通过Switch通信
1. 虚拟网卡配置
648中延用638中方法在有线网络接口eth0上创建虚拟网卡eth0.1并设置ip 10.66.1.3用以与410地址10.66.1.2通信。
配置结果可通过命令“ifconfig”查看:
并且配置完成后,系统路由表中会自动多出一条路由:
2. Android M 多网络共存
经过步骤一的配置之后在638 Android 4.4系统上即可与410建立通信;但在648 Android 6.0上是不通的。此问题查询了很长时间终于有了解决方案,且听我细细道来。
Android4.4只使用了一张路由表,使用busybox route就可以完成路由表的设置,从Android5.0之后,考虑要对多网络的支持,采用了多路由表。Android 5.0(LOLLIPOP)以上,在同一时间下,Android系统可以允许多网络类型连接,而且并不是简单的网络共存,而是每个网络有一套自己的dns,网关,路由表。比如eth0,wlan0分别有自己独立的一套。应用层在建立socket连接的时候,可以自由选择使用那套网络;在这样子的前提下,你就可以选择究竟采用那种网络来完成你的请求。这里还涉及到另一个新的概念不同网络的标识netid,应用层可通过绑定指定的netid来设置该应用走指定的网络,但此处暂不赘述有兴趣可自己了解。在Android 5.0(LOLLIPOP)之前,在同一时间下,Android系统只能允许一种网络类型连接。之后在多网络的情况下,系统是如何选择的呢?这就需要引入一个关键名词“策略路由”。
策略路由在linux中已经存在很久,但是Android5.0开始才真正将其作用发挥出来。策略路由区别于一般的路由就在于,一般的路由是以目的地址作为识别与区分的标识,例如下面这个路由表,它表示所有目的地址为192.168.7.0/24的数据包都直接从eth0发出
当面对比较复杂的情况时,这种基于目的地址的路由,就很受局限。例如:有两个网卡eth0, eth1,希望所有http上网数据从eth0出去,FTP数据从eth1出去。这种情况就必须要策略路由才能处理。
策略路由的基本命令:
648上策略路由信息:
各部分解释
整行的意思就是,如果一个数据包符合规则(源地址、目的地址、协议、端口、数据包大小、内容等),则使用指定路由表。
系统最多支持255个路由表:
在默认情况下进行路由时,首先会根据规则0在本地路由表里寻找路由,如果目的地址是本网络,或是广播地址的话,在这里就可以找到合适的路由;从这个路由规则中可以看到, 路由表 local优先,然后是netid 对应 0x10064 的走 eth0 路由表,对应 0x10066 走 eth0 路由表。而通常情况下访问网络时没有设置 netid,默认就使用 22000: from all fwmark 0x0/0xffff lookup eth0 这个,即 eth0 路由表。
有了策略路由,就可以保证当多网卡存在是,每个网卡有自己的路由表,为多网卡共存提供路由基础。上层应用,可以选择要经过的路由。
此处没有走eth0.1到10.66.1.2的路由策略,需添加:
3. Linux 路由与策略路由
Linux是在内核2.1开始采用策略性路由机制的。策略性路由机制与传统的路由算法相比主要是引入了上面的多路由表以及规则的概念。
要配置一个策略路由有2步:
1、在自定义路由表中添加要走的路由 ip route add xxx table table_num
2、增加策略,使得符合该策略的流量走第一步所定义的路由表 ip rule add 策略 【table tablenum 或 动作】。
传统的linux路由是由一张路由表去保存网络链路上的路由信息的。新的linux策略路由的理念是使用多张路由表去保存路由信息。何为策略路由呢,就是为不用的数据包制定不同的路由策略,即在IP路选时走不同的路由。
在策略路由机制中,可以支持多张路由表,最多可支持255张表。其中4张是内置路由表,如下:
策略路由的作用
1 基于源地址选路( Source-Sensitive Routing)
2 根据服务级别选路( Quality of Service)
3 节省费用的应用
4 负载平衡(Load Sharing)
7. android 使用以太网 wlan0没有
可以尝试把eth0映射到wlan0,或者直接在windows里用virtualbox虚拟机安装,依靠虚拟机配置网络(hyper-v不行)