什么是Android VpnService.Builder setBlocking

时间:2018-04-06 14:26:16

标签: android vpn android-vpn-service

我的问题是:它到底做了什么?例如,如果我将其设置为true,它对我想要写入TUN设备的包(datagrams?)有什么作用?据我所知,意味着所有要写入TUN设备的数据包都将被丢弃而不是以其他方式处理。这是this吗?

所以我只能跟踪它到目前为止的作用:

public Builder setBlocking(boolean blocking) {
    mConfig.blocking = blocking;
    return this;
}

那个

public class Builder {
    private final VpnConfig mConfig = new VpnConfig();
    //other stuff here ...
}

我也读过official description,但我仍不清楚。谷歌搜索它只会导致搜索结果与"如何绕过VPN阻止"。

1 个答案:

答案 0 :(得分:1)

它确实是指阻止I / O,与阻塞流量或如何处理数据包无关。相反,它会改变程序与文件描述符的交互方式。

在阻塞模式下,read()/write()之类的操作将阻塞,直到某些数据被传输(或发生错误),而在非阻塞模式下,操作可能会立即返回(使用EAGAIN或{{1如果文件描述符当前没有准备就绪,那么操作就会阻塞。