前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Socket无限SocketTimeoutException真凶–WLAN助手

Socket无限SocketTimeoutException真凶–WLAN助手

作者头像
全栈程序员站长
发布2022-11-01 10:27:56
6820
发布2022-11-01 10:27:56
举报
文章被收录于专栏:全栈程序员必看

看到标题你可能不知道我说的是什么鬼东西,但是如果你有类似的经历的话,那么恭喜你,也恭喜我自己,终于解决这个问题了。

用过小米、华为等手机的都知道,当我们连接上一个不能上网的WIFI时,系统都会友好的给出 “此WLAN无法访问互联网,请更换网络/切换为移动数据网络” 等类似的提示,今天我就说下本人在这里面遇到的坑。

背景

有个Android项目需要连接硬件设备的WIFI,然后通过socket进行通信,我这边已经开发完成,也测试过功能都是没问题的,然后给客户那边测试,客户那边有台手机打死连接不上设备。 首先确认代码是没问题的,在其他多台手机上跑也是正常的。 另外就是在连接设备(不是指连接硬件设备发射 的WiFi,而是指通过TCP进行长连接通信)前需要先进行UDP广播,通过广播找到设备相关,获取设备信息,这一步也没问题。 然后在拿到设备的IP和端口后,进行TCP长连接,问题就卡在这里了,一直是SocketTimeoutException 连接超时,试过无数办法也没用,无奈只要让客户把手机寄过来,现场调试。

问题手机信息:小米4,Android 6.0,MIUI9.6。

调试流程

硬件设备在发射WIFI信号时,去连接这个WIFI(这个WIFI是没网的),然后手机连接WIFI成功了,这里注意是连接成功了,然后过几秒提示“此WLAN网络无法访问互联网”,这个提示是在手机通知栏提示的(有些手机是直接弹窗提示的),当时没在意,然后连接TCP,连不上,因为之前测过多次,基本认定出现这问题跟手机有关,所以我把注意放到这个提示上了,我点击了提示,选择了“使用此WLAN”按钮,然后再起尝试连接TCP,神奇的事情发生了,这次连接成功了,然后又尝试了多次,总结出规律:

只要在WLAN设置界面开启了“WLAN助理 (在WLAN连接不佳加时智能选择WLAN或移动数据网络)”**,就会在通知栏弹提示,这时候所有的TCP连接都将失败(ping也ping不通,具体原因不明,有知道的大佬望解答),但是UDP连接却没问题,将WLAN助理 关闭后,在连接该WIFI,就不会有这样的提示了,这时候TCP连接就完全正常。

这个bug困扰了一周,总算是找到问题解决了。我不知道是不是只有这一个还是这一批手机都是这样的,因为我拿别的小米手机(MIX2S、红米4等)和华为手机(荣耀9,Mate7)虽然有这样的无法连接网络的提示,但是都没有无法连接TCP这样的问题。 遇到这样的BUG也是心累,也希望小米的工程师能优化下这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179424.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题手机信息:小米4,Android 6.0,MIUI9.6。
  • 调试流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档