由于最近在做一个项目的Android客户端,需要测试其与服务器的连接。

但由于我在自己电脑搭本地服务器,而电脑又经过了路由、交换机等连网,

所以在手机内置浏览器中直接输入ip地址+端口也无法访问服务器,需要设置其与电脑在同一网段。

解决这个问题的办法可以是用无线路由,使得电脑和手机同时连上WIFI,然后就可以访问。

但我不明白我的MOTO XT800为何连上WIFI后不能通过内置浏览器上网,

但是某些应用的客户端在我设置静态IP绑定之后就能成功通过WIFI连网。

所以,用这个办法不能达到我的目的。

 

后来我知道了Android手机可以通过USB连接电脑使用宽带上网。

于是我查了一些教程,经过各种尝试与报错之后终于成功连上,在这里分享一下。

(实际上,某些HTC手机已经自带这个功能,但我的MOTO显然没有)

测试手机:Motorola XT800

测试手机系统:Android 2.2

电脑系统:Windows 7 

 

在进行这项工作之前,首先确保你的Android手机

1)已经取得root权限,root过的人都知道图中名叫Superuser的应用吧(怎么root?网上一大堆教程啊!);

2)安装了以下应用:BusyBox,BTEP(即“超级终端”,图中Better开头的应用),GSript MOD(图中名叫“脚本”的应用),这些在豌豆荚都可以找到吧。

好吧,准备就绪!开始吧!

以下步骤以我的MOTO XT800为例。

 

第一步:开启USB调试模式

打开“设置”->“应用程序”->“开发”,然后“USB调试”这一项打上勾。

然后用USB连接电脑,这时状态栏会出现黑色的USB连接图标。

还有,USB连接时不要使用“内存卡存取”(这是其他文章里面说的)。下拉状态栏,点击“USB连接”即可设置。

  

 

第二步:USB绑定

打开“设置”->“无线和网络”->“绑定”,然后“USB绑定”这一项打上勾。

这时状态栏出现蓝色的USB连接图标。

 

 

第三步:电脑端设置网络分享

在手机还没连接电脑,USB还没绑定之前,我打开“控制面板\网络和 Internet\网络连接”,只有这五个。

其中最后一个“无线网络连接”是我正在使用的上网连接,请找出你自己正在使用的上网连接。

USB绑定之后,再连接电脑,该目录下多出了“本地连接2”(在你的机子上也可能是本地连接3、本地连接4……)

这是手机的连接。

然后点击“无线网络连接”(也就是你正在使用的上网连接),右键->属性,点击“共享”选项卡,

“允许其他网络用户通过此计算机的Internet连接来连接”这一项打上勾,

然后选择手机的连接,也就是我的“本地连接2”,点击“确定”。

然后,你可能会见到以下报错,如果没有遇到可以跳过。

这个估计是防火墙没开的原因,解决方法:点击“开始”,在“搜索栏”输入“服务”,找到“Windows Firewall”,“右键”->“开启”

然后再重试刚才分享网络的步骤就不会再报错(如果还有其他错误,我也不清楚,因为我没遇到= =)

完成分享网络的步骤就可以把防火墙关掉。

 

第四步:设置IP、子网掩码、DNS

完成分享网络之后,双击属于手机的那个连接,点解“详细信息”,会看见IPv4地址是“192.168.137.1”

(也不一定是这一个地址,但其实这个地址没用,后面会解释)

然后在手机端运行BTEP(超级终端),只要你root过都会出现“授权请求”,每次遇到点击“允许”就可以了。

如图,在终端输入

su

busybox route add default gw 192.168.137.1

其中192.168.137.1就是你刚才看的地址,

然后成功地报错:“route SIOCADDRT: Network is unreacheable”

原因是手机的USB网卡地址和电脑的虚拟网卡的地址不在同一网段导致的。

(原因引用:http://bbs.hiapk.com/thread-968933-1-1.html

 

解决办法:输入

busybox ifconfig

然后会弹出多行信息,其中usb0的这一段,可以找到两个地址都是192.168.42.*(在你的电脑上可能是另一个)

于是这时你要在电脑重新设置手机连接的地址。

点击手机连接(也就是我的“本地连接2”),右键->属性,双击TCP/IPv4

设置IP地址为192.168.42.*,一般是192.168.42.1即可。

假设你刚才在超级终端看到的两个地址是a.b.c.*,则你把IP地址设置成a.b.c.1即可。

另外设置 子网掩码255.255.255.0,首选DNS服务器:8.8.8.8

完成后点击“确定”

然后再打开手机中的BTEP(超级终端),重新输入

busybox route add default gw 192.168.42.1

其中192.168.42.1就是你刚才设置的IP地址。

这时就不会再报错。

然后可以继续在超级终端输入

set prop net.dns1 8.8.8.8

(其实这句貌似可以不用写)

但是我直接改为打开GScript MOD(脚本)这个应用,点击手机的“菜单键”(“田”字那个键),点击“添加脚本”

将我刚才在超级终端输入的有效的命令写入脚本

su

busybox route add default gw 192.168.42.1

set prop net.dns1 8.8.8.8

并且将脚本命名为android-usb-online,点击“保存”,这时可以看到自己新建的脚本,直接点击即可运行脚本。

(注意,由于这个应用本身自带了不少脚本,所以点击时要小心,不要点错了)

  

方便起见,可以在手机桌面长按,弹出的对话框选择“快捷方式”,然后选择“脚本”,然后点击刚才保存的脚本,

那么这个脚本就成为一个图标放在手机桌面上,每次想运行只需要点击一下。

  

 

第五步:浏览网页

如果脚本运行之后没有出现其他报错信息,那么就应该可以通过手机内置浏览器来上网了,甚至可以访问我在电脑搭建的服务器。

这时即使你关闭了WIFI、GPRS、3G等等的上网功能,只要你的手机USB连着电脑就可以访问网络。

只不过这样打开内置浏览器的话,它会告诉你“没有网络连接”,但其实可以忽略,它只是循例检查一下网络。

但是我测试的微博客户端似乎不能通过这种方式连网,人人客户端可以喔!

不过,这样对我来说已经足够,因为我可以通过手机内置浏览器访问我电脑的本地服务器了。

  

ps:以后每次通过这种方式来上网,只需要设置USB绑定和执行脚本。

手机USB连接设置如果没有改动不用重新设置;

电脑端的连接部分已经默认分享网络,所以不需要重新设置。

END

版权声明:本文为wingfung原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wingfung/archive/2012/07/18/2598407.html