android avd 连接外部服务器的方法

社区广播:运维派(Yunweipai.com)是国内最早成立的IT运维社区,欢迎大家投稿,让运维人不再孤寂的成长!

开发android程序,通常会有网络连接,当我们使用模拟器(avd)运行需要网络权限的app时候,需要注意以下两点。
1、组网
avd连接到外部网络,通常存在两种情况:avd与服务在同一台机器上;avd与服务在不同的机器上。
1)avd与服务在同一台机器上。这时候avd要连接服务器,该用哪个IP地址呢?可能有人会想到127.0.0.1(localhost)。但是仔细想一想,avd是一个模拟器,相当于一个虚拟机,localhost就连到了自己,这个是行不通的。avd是一个虚拟机,相当于一台独立的机器,因此有自己独立的网络IP地址。所以就常用的就是连接服务器的外网(在这个局域网或internet上的)IP地址。
有人会问,我的服务器是通过DHCP动态获取IP地址的,且我得avd与服务器在同一机器上,每次服务器启动得IP地址都不一致,那我每次都得修改app配置文件中的IP地址?这个确实是一个麻烦事情,不过还好,avd提供了类似127.0.0.1的环回IP地址,其实是一个桥接地址更准确,他让你能够连接到运行avd的服务器,这个IP地址就是10.0.2.2
2)avd与服务器在不同的机器上。这种组网下只能连接服务器的外网IP地址。

2、android app配置
网络通了之后,可能会遇到app连接服务器失败的问题,其错误是 ConnectionRefused,这种错误一般是IP能够连通,但是连接某个特定的端口被拒绝了。仔细查看其异常信息,会发现有这么一个信息:

socket failed :EACCES (Permission denied)

没有权限。
这个是app没有申请网络权限,在app的 AndroidManifest.xml 文件中,需要申请网络访问权限:

...
uses-permission android:name="android.permission.INTERNET"
...

加上权限申请之后,就可以工作了。

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部