栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Android真机调试异常java.net.SocketTimeoutException的简单解决方案

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android真机调试异常java.net.SocketTimeoutException的简单解决方案

问题描述

今天在用真机调试连接本地服务器的时候,一直连接不上,点击用来测试连接的按钮时,没有反应,获取不到想要的数据。打开日志,报了java.net.SocketTimeoutException错误,大概能懂它的意思是连接超时,也就是说我的手机连不上我电脑上的服务器。但是我在浏览器中访问的时候又是完全正确的,能够获得想要的数据。

原因分析

所以肯定还是我的手机和服务器的连接方式出了某些问题,导致我一直连接失败。

于是立即网上百度,查看了不少博主的文章,也逐渐对这个问题有了更深的认识,我大概总结一下我了解到的,产生连接失败问题的原因:
①电脑防火墙拦截了手机访问电脑上服务器的请求;
②手机和电脑不在同一个局域网中;
③手机问题,部分手机影响应用访问服务器;
④服务器代码有问题;
⑤服务器没有开起来;
⑥发送连接服务器请求的url写错;(这个是重中之重,后面解释!)

解决方案

①电脑防火墙拦截了手机访问电脑上服务器的请求;
这个的话把电脑防火墙关掉就行。

②手机和电脑不在同一个局域网中;
看了网上的文章,大部分都提到如果是用真机测试,那么真机和电脑应该要在同一个局域网中,也就是说,你用来调试的手机和电脑要连接同一个网络(连接同一个wifi),或者你手机打开热点,让电脑连接,这都能使得手机和电脑在同一个局域网中。我采用的就是电脑连接手机热点。

③手机问题,部分手机影响应用访问服务器;
这个自求多福吧,可以网上查下资料,我没有遇到这个问题,也就没花时间去查资料,估计现在大部分手机应该都不会有这个问题吧(狗头)。

④服务器代码有问题;
这个问题出现的概率很小,因为一般都可以用postman等工具先简单测试一下,如果通了,再放进安卓里。

⑤服务器没有开起来;
这个是太低级的错误了。

⑥发送连接服务器请求的url写错;(这个是重中之重,后面解释!)
好了,重点来了,这也是我的问题,下面具体说说怎么解决。
发送连接服务器请求的URL一般是这样的:http://192.168.43.30:8080/demo/all(这是我的,写出来做个参考,方便下面说明)
url写错,有两种主要的可能。
一是把这里的192.168.43.30(也就是电脑和手机所在的局域网中,电脑的ip地址)写成了localhost或者其他的你的服务器默认的形式,比如host。因为我们是用真机,真机调试代表着你的电脑和手机是两台不同的设备,要想访问电脑上的服务器,应该指明电脑在局域网中的ip地址,而不应该写localhost或者host(这种服务器默认的写法代表本地,这样写,相当于是让手机在手机这台设备上找,当然找不到电脑那里去)。
二是这里的192.168.43.30不是正确的地址。如上所述,这里应该填写电脑的ip地址。所以我一开始去网上查了一下,在cmd窗口中输入ipconfig命令即可查看到本机ip。然后我把这个ip填进去,还是不对,还是出现了文章一开始说的情况,点击按钮发送请求,没有收到返回数据,打开日志发现连接超时。这里就是我的问题的关键所在,我是通过cmd查到了电脑的ip,但是这个ip不是手机和电脑所在的局域网中,电脑的ip
我们应该填的是后一个ip。

接下来的问题,手机和电脑所在的局域网中,电脑的ip怎么看?步骤如下:
1、打开电脑的控制面板
2、网络和Internet——>网络和共享中心
3、找到电脑连接手机热点形成的局域网(因为我是连的手机热点,故按照热点的情况来说明)

4、点击上图画线部分,进入如下界面:

5、点击详细信息,进入如下界面:

这个IPv4地址就是手机和电脑所在的局域网中,电脑的ip,可以看到也就是上面我调试成功后正确的ip地址192.168.43.30。

最后,重新运行安卓,成功获取数据。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905972.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号