【发布时间】:2019-12-02 16:24:44
【问题描述】:
我有一个 VPN 服务,使用 ParcelFileDescriptor 和一个构建器来设置网络参数。 像这样的代码:
private Builder builder = new Builder().setSession("myService")
.addAddress(...)
.addDnsServer(...)
.establish()
现在,我想在连接时更新网络参数(例如 DNS 服务器)。
文档中的相关部分是这样的:
为避免冲突,在连接处只能有一个活动 VPN 接口 同时。通常网络参数在运行期间永远不会改变 VPN 连接的生命周期。应用程序也很常见 关闭前一个文件描述符后创建一个新的文件描述符。然而, 执行时很少但并非不可能有两个接口 无缝交接。在这种情况下,旧界面将是 新建成功后停用。两个文件 描述符是有效的,但现在传出的数据包将被路由到 新界面。因此,在耗尽旧文件描述符后, 应用程序必须关闭它并开始使用新的文件描述符。如果 无法创建新接口,现有接口及其 文件描述符保持不变。
正如它所说 - “通常网络参数在 VPN 连接的生命周期内永远不会改变”,但我确实想改变它们。有可能吗?
【问题讨论】:
-
连接@Roee84后为什么要更改网络参数
-
为什么不能尝试断开连接再连接,而不是更改同一个对象的参数。可能你必须这样做。
-
这就是我正在做的事情,但由于某种原因,此代码在 Chromebook (ChromeOS) 上中断,因此我正在尝试寻找解决方法。
标签: android android-vpn-service