Android网络API无法连接同局域网Java GET服务器问题求助
解决Android无法连接局域网Java GET服务器的问题
我之前也碰到过几乎一模一样的场景:本地Java服务器在浏览器里正常跑,但Android端死活连不上,报超时错误。结合你的情况,咱们一步步排查解决:
1. 检查Java服务器的监听地址
很多新手写ServerSocket的时候,会默认绑定127.0.0.1(也就是localhost),这就导致只有服务器本机能访问,局域网内的其他设备(比如你的手机)根本连不上。
修正方法:
把服务器代码里绑定的IP改成0.0.0.0(监听所有可用网络接口),或者直接绑定你的局域网IP192.168.1.103。比如:
// 错误写法:仅本机可访问 ServerSocket serverSocket = new ServerSocket(8077, 50, InetAddress.getByName("127.0.0.1")); // 正确写法1:监听所有接口 ServerSocket serverSocket = new ServerSocket(8077, 50, InetAddress.getByName("0.0.0.0")); // 正确写法2:绑定指定局域网IP ServerSocket serverSocket = new ServerSocket(8077, 50, InetAddress.getByName("192.168.1.103"));
2. 配置Android的网络权限与明文HTTP允许
Android 9(API 28)及以上版本默认禁止明文HTTP请求,同时必须声明网络权限:
- 在
AndroidManifest.xml里添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
- 在
<application>标签里添加允许明文HTTP的配置:
<application ... android:usesCleartextTraffic="true"> ... </application>
3. 检查电脑防火墙/安全软件拦截
电脑上的防火墙、杀毒软件很可能会拦截局域网设备对8077端口的访问。你可以:
- 临时关闭防火墙,测试是否能连接
- 或者在防火墙里添加入站规则,允许TCP协议的8077端口接收连接
4. 确认网络环境的连通性
虽然你说在同一网络,但还是要做两个验证:
- 用电脑ping手机的IP(手机设置里能查到),看是否能通
- 用手机的终端工具(比如Termux)ping电脑的IP
192.168.1.103,看是否能通
如果ping不通,大概率是路由器开启了AP隔离功能,去路由器后台关掉这个选项就行。
5. 确保Android网络请求不在主线程
Android严格禁止在主线程执行网络请求,如果你直接在Activity的主线程里发起请求,不仅会报异常,也可能导致超时假象。务必用异步方式执行网络请求,比如:
- 使用
AsyncTask(旧版) - 使用Kotlin Coroutines(推荐)
- 使用OkHttp的异步回调
按照上面的步骤排查,应该能解决你的连接超时问题。
内容的提问来源于stack exchange,提问作者TangXianQiang
相关产品推荐
相关产品推荐

