【发布时间】:2021-11-09 10:11:05
【问题描述】:
我正在考虑尝试在 Android 上实现一个 VPNService 来进行数据包过滤和报告,我最初一直在研究这个项目:
https://github.com/hexene/LocalVPN
除此之外,我一直将 Google 的 ToyVpn 作为了解我可以使用 VPNService 做什么和不能做什么的基础。两者的唯一问题是在构建 VPNService 时启动非阻塞 VPN,然后轮询文件描述符,然后等待大约 100 毫秒。两者都有 cmets 表明这不是这样做的方法。我假设他们运行的是非阻塞 VPN,因为阻塞 VPN 要复杂得多?
我还假设(错误地)添加该行
builder.setBlocking(true);
会解决问题,但是虽然 VPN 服务似乎做了一些事情,但它似乎没有做任何有用的事情,因为如果你连接到它并打开浏览器会话,一切都会超时。几乎就像添加此行会导致数据包被丢弃。
目的是将它作为一个阻塞 VPN,这样我就可以消除轮询文件描述符的需要,我确信这对电池寿命不利。
【问题讨论】:
标签: android vpn blocking android-vpn-service