2025-12-10 10:09:36.427 [2] [Debug]: NEW_MESSAGE_RECEIVE finished.
2025-12-10 10:09:56.435 [92] [Error]: failed to connect to ip6-localhost/::1 (port 9018) from /::1 (port 44072) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
2025-12-10 10:09:56.436 [92] [Debug]: java.net.ConnectException: failed to connect to ip6-localhost/::1 (port 9018) from /::1 (port 44072) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
at libcore.io.IoBridge.isConnected(IoBridge.java:347)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237)
at libcore.io.IoBridge.connect(IoBridge.java:179)
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:646)
at com.inode.common.IESConnect.<init>(IESConnect.java:52)
at com.inode.message.connect.MsgTcpConnectionHandler.sendRequestMessage(MsgTcpConnectionHandler.java:53)
at com.inode.message.process.MessageProcess$RequestMessageThread.run(MessageProcess.java:765)
Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
at libcore.io.IoBridge.isConnected(IoBridge.java:334)
... 11 more
failed to connect to ip6-localhost/::1 (port 9018)
ECONNREFUSED (Connection refused)
解释:
应用要连接本机 IPv6 地址 (::1) 的 9018 端口
但目标端口上没有任何服务在监听 → 主动拒绝连接
也就是:
你客户端连得上,但服务器端口没开 or 程序崩了 / 没启动
| 行为 | 日志现象 |
|---|---|
| 发起 TCP 连接到 ::1:9018 | Socket.connect |
| 等待 10 秒 | after 10000ms |
| 对端拒绝 | ECONNREFUSED |
| IPv6 ⬆ | ip6-localhost/::1 |
所以不是:
网络断开
防火墙拦截
超时丢包
而是 本地服务没监听 9018
按照优先级检查:
Android 本地服务/Native 程序是否在运行?
比如一个 TCP Server (本地消息处理服务)
→ 服务未启动就会报这个错
有些程序只监听 127.0.0.1:9018
但客户端去连 ::1:9018
→ 导致只有 IPv4 有监听,IPv6 请求被拒绝
检查服务是否监听 IPv6 回环:
netstat -an | grep 9018
应有类似:
tcp6 0 0 ::1:9018 LISTEN
如果只有:
tcp 0 0 127.0.0.1:9018 LISTEN
→ 说明仅监听 IPv4
→ 客户端应改成连接 127.0.0.1,不要使用 ::1
可能进程 crashes → 端口释放 → 客户端重试失败
| 场景 | 触发现象 |
|---|---|
| 应用启动顺序错 | 连接线程比服务启动快,先连就报错 |
| 服务挂掉/退出 | 定时任务 → 服务重启时短暂拒绝连接 |
| IPv6 兼容性问题 | Android 改成 IPv6 首选,导致连接失败 |
| 持久连接断开,重新建连失败 | 心跳超时、后台休眠 |
任选其一适合你的情况:
| 解决方式 | 推荐度 |
|---|---|
| 服务端同时监听 IPv4 和 IPv6 | ⭐⭐⭐⭐⭐ |
| 客户端强制使用 127.0.0.1 替代 ::1 | ⭐⭐⭐⭐ |
| 保证服务先启动成功再创建 Socket 连接 | ⭐⭐⭐⭐ |
| 检查服务是否存在重启或崩溃现象 | ⭐⭐⭐ |
Socket socket = new Socket();
socket.connect(new InetSocketAddress("127.0.0.1", 9018), 10000);
避免由系统默认的 IPv6 地址解析
你在本机访问本地服务,但服务端口 没有监听 IPv6 回环 或 没启动,因此本地 TCP 连接直接被拒绝。
如果你愿意,我可以帮你:
分析服务监听情况,给你 netstat 结果解析
检查 Android Logcat 中服务崩溃日志
提供双栈 IPv4/IPv6 的 Socket 初始化代码
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论