Android真机连接本地部署的Tomcat问题

对Android开发者,都会经历使用Android真机来测试连接本地服务器这样的事情。

这里所说的“本地服务器”大多数时候指的是:搭载有某种服务器软件的PC,例如搭载有Tomcat服务器的PC,就可以拿来当作本地服务器。

访问本机tomcat的方式:

1.用浏览器访问本机:

localhost:端口号(这个不做解释)
127.0.0.1:端口号(127.0.0.1是回送地址,指本地机,一般用来测试使用)
192.168.56.1:端口号(本机真实ip,只是一个例子,请查自己本机ip)
至于端口号,自己可以修改,默认8080。

2.用真机或模拟器访问本机的服务:

因为android模拟器本身的IP地址就是127.0.0.1或者localhost了,所以你不能将tomcat的IP配置成localhost,应该配置成10.0.2.2,最好的方法就是配置你电脑的真实IP地址。

10.0.2.2:端口号(android内置的IP, 10.0.2.2 是模拟器设置的特定ip,是你的电脑的别名alias记住,在模拟器上用10.0.2.2访问你的电脑本机)

192.168.56.1:端口号(本机真实ip,推荐使用)

下面介绍我在使用中碰到的问题及解决方案:

在本地部署tomcat后,我连接的是公司的无线网络,IP地址为:192.168.56.1。启动tomcat后,我在本机访问http://192.168.56.1:8080/http://localhost:8080/成功访问到Apache tomcat。如图:

这里写图片描述

然后我的tomcat中的服务项目首页地址为takeoutService/home。访问http://192.168.56.1:8080/takeoutService/home也能拿到数据,如图:

这里写图片描述

但是我用真机测试,app中使用retrofit请求网络,拉取首页数据时,出现socket time out exception。retrofit默认的连接超时是10秒。所以基本排除了网络故障原因,我手机连接的也是公司的无线网络,理论上来说是在同一个局域网下面的。

如何测试呢?

然后我打算用手机浏览器访问我电脑的tomact服务器。如果能访问说明没问题的,手机浏览器输入:http://192.168.56.1:8080/
结果竟然是访问不到。说明我的手机和电脑虽然连的都是公司的wifi,但我手机却不能访问到我的电脑上的tomcat服务器,且我电脑关闭了防火墙,也确定tomcat已经启动

无赖之下,我怀疑是这个局域网的问题,于是用电脑发射wifi,手机连接电脑上的wifi。再通过手机访问tomcat,结果是,成功了。我的app也能够拿到本机tomcat上的数据了。

然后我去问公司的老员工,搞后台的。他给我讲,我手机连电脑发的wifi显然跟电脑是在同一个局域网下的。

但是我们公司的这个wifi是内网,只有特定的机器能与外界交流,内部机器与外界无法沟通。内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。我们平时可能在内网机器上搭建过网站或者FTP服务器,而在外网是不能访问该网站和FTP服务器的,原因就在于此。

纸上得来终觉浅,绝知此事要躬行!

发布了8 篇原创文章 · 获赞 5 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览