1

我对 Android 编程很陌生,我有一个关于 Android VPN 防火墙的小项目,基于这个 GitHub 存储库:https ://github.com/hexene/LocalVPN (等等在 VpnService 之上)

问题是,没有对原始存储库中的代码进行任何编辑,VPN 会在一段时间后停止工作(通常在几秒钟后)。我的意思是所有应用程序都失去了互联网连接,所以我猜数据包停止流经 VPN。它是随机发生的,似乎没有触发事件。同样,我从代码中编辑了 0 行。

到目前为止我尝试过的是:

  • 按照这里的建议使用 startForeground() 。没有什么变化。
  • 显示永久的高优先级通知以防止服务停止(尽管我不知道服务停止是否是原因。
  • 使用 Builder.addAllowedApplication() 仅允许 VPN 中的某些应用程序。正如预期的那样,这没有奏效。

有人有什么想法或智慧可以分享吗?将不胜感激!

编辑:当互联网停止工作时,日志会这样说:

03-16 00:52:18.904 13182-13260/xyz.hexene.localvpn E/TCPInput: Network read error: 172.217.23.67:443:42746
                                                           java.io.IOException: Connection reset by peer
                                                               at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
                                                               at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
                                                               at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
                                                               at sun.nio.ch.IOUtil.read(IOUtil.java:192)
                                                               at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:382)
                                                               at xyz.hexene.localvpn.TCPInput.processInput(TCPInput.java:133)
                                                               at xyz.hexene.localvpn.TCPInput.run(TCPInput.java:72)
                                                               at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
                                                               at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                               at java.lang.Thread.run(Thread.java:776)
4

0 回答 0