2

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

所以我只能跟踪它到目前为止所做的事情:

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

然后

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

我也阅读了官方描述,但我仍然不清楚。谷歌搜索只会导致与“如何绕过 VPN 阻止”相关的搜索结果。

4

1 回答 1

2

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

在阻塞模式下,类似操作read()/write()将阻塞,直到某些数据已传输(或发生错误),而在非阻塞模式下,如果文件描述符当前未准备好并且操作将阻塞,则操作可能会立即返回(使用EAGAINor )。EWOULDBLOCK

于 2018-04-09T07:24:40.440 回答