1.背景

本身要实现一个简单的物联网App,硬件设备开启局域网wifi,手机连接WIFI后进行TCP通信,但就这么简单的应用却遇到坑了,在这里记录一下;

2.问题


在测试硬件设备串口WIFI功能时遇到了奇怪的现象,在上图中设备以AP模式开启Wifi,客户端设备断开其他网络通道(手机关闭数据流量、PC拔掉网线)后连接此wifi,结果除PC端连接正常外,移动设备(ios与Android)都出现了TCP连接失败,ios端可以ping通192.168.8.0;

查看Socket连接报错日志如下:

java.net.ConnectException: failed to connect to /192.168.8.0 (port 8080) from /:: (port 0): connect failed: ENETUNREACH (Network is unreachable)at libcore.io.IoBridge.connect(IoBridge.java:143)at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)at java.net.Socket.connect(Socket.java:621)at java.net.Socket.connect(Socket.java:570)at java.net.Socket.<init>(Socket.java:450)at java.net.Socket.<init>(Socket.java:218)at top.luchenxi.lgrswifitest.TcpClient.run(TcpClient.java:60)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)at java.lang.Thread.run(Thread.java:919)Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)at libcore.io.Linux.connect(Native Method)at libcore.io.ForwardingOs.connect(ForwardingOs.java:95)at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:136)at libcore.io.ForwardingOs.connect(ForwardingOs.java:95)at libcore.io.IoBridge.connectErrno(IoBridge.java:157)at libcore.io.IoBridge.connect(IoBridge.java:135)... 13 more

connect failed: ENETUNREACH (Network is unreachable),而并非是 ETIMEDOUT

尝试在以上连接下,局域网内各客户端进行通信,出现如下情况:


由于对网络知识的匮乏,经过好几天的无脑尝试(更换测试工具、更换测试手机品牌、客户端配置固定IP、配置网关、配置DNS、联系串口wifi供应商等),最后尝试修改设备串口wifi模块服务IP后,居然…神奇的解决了!!!!!!

改动如下:

将服务器IP:192.168.8.0 修改为 192.168.8.1

3.原因

大概原因为192.168.8.0/24 与 192.168.8.255/24这个两个地址比较特殊,百度上有种说法是一个为域地址一个为广播地址,这两个地址并不在192.168.8.0/24这个网段中。

但是如果不在一个网段中,为什么PC端能够连接呢?

有大佬指导原因的话麻烦指导下!!不胜感激!!

更多相关文章

  1. Android获取内置、外置以及OTG等方式挂载的存储设备路径
  2. Android(安卓)App 网络接入实时监控
  3. 为Android、iOS设备搭建模拟丢包、慢速网络模拟环境
  4. 推荐一款一键切换到无线调试的Android(安卓)Studio插件Android(
  5. 友盟2013年上半年数据报告:与开发者相关的各种干货数据
  6. Android(安卓)11 功能和 API : 面向企业的 Android(安卓)新功能
  7. UI设计师给的px尺寸单位,安卓如何换算成dp?
  8. android手动连接wifi的过程
  9. Android开发之adb && 破解开屏图案 && 代码判断当前是否处于锁屏

随机推荐

  1. android image cache 图片缓存 异步 下载
  2. 个人修改机智云apk之出现couldn't find "
  3. android 缩放图片与内存溢出
  4. android(javaOO)遇到的小问题
  5. Android退出应用最优雅的方式
  6. android下进行opencv开发的配置
  7. Android再按一次后退键退出
  8. RxJava操作符
  9. 使用Android-PullToRefresh实现下拉刷新
  10. Android(安卓)N(SDK7.0)新特性