【问题标题】:What could cause intermittent 'Permissions Denied' errors in DatagramChannel connect() calls on Android?什么可能导致 Android 上的 DatagramChannel connect() 调用中出现间歇性“权限被拒绝”错误?
【发布时间】:2020-07-01 12:51:18
【问题描述】:

我看到来自最终用户设备的间歇性错误报告,例如:

java.net.ConnectException: Permission denied
    at sun.nio.ch.Net.connect0(Net.java)
    at sun.nio.ch.Net.connect(Net.java:466)
    at sun.nio.ch.DatagramChannelImpl.connect(DatagramChannelImpl.java:759)
    at tech.httptoolkit.android.vpn.SessionManager.createNewUDPSession(SessionManager.java:159)

最后一行在这里:https://github.com/httptoolkit/httptoolkit-android/blob/2d514dce3079d23b7a500580b202ae4f7767eaaa/app/src/main/java/tech/httptoolkit/android/vpn/SessionManager.java#L152

应用程序已经request INTERNET permission,并且连接正常工作,它们只是间歇性地失败。

我没有关于失败的确切请求的更多信息,而且我自己无法轻松重现该问题以进行测试,因此我正在盲目调试。

这个错误的可能原因是什么?

【问题讨论】:

    标签: java android error-handling permissions udp


    【解决方案1】:

    本地操作系统拒绝连接。

    • Java 1.4 中添加了 IPv6 支持
    • IPv6 存在问题(在 Java 7 上)

    尝试在服务器和客户端计算机上禁用 IPv6。 (对于 android 你可以选择 IPv4,在你的“移动网络”中的语音“APN 协议”下)

    【讨论】:

    • 我还没有 100% 确认这是原因,但它是一个强有力的候选人,我没有更好的答案,所以赏金是你的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2012-05-05
    • 2014-09-29
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多