gpt4 book ai didi

java - Java 中的阻塞套接字写入和非阻塞套接字写入有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:11 24 4
gpt4 key购买 nike

非阻塞读和阻塞读的区别很明显,但是我对写却一头雾水。我知道非阻塞写入永远不会阻塞(呃!)。如果底层套接字缓冲区已满,则不会向其中写入字节。这就是为什么在调用 channel.write 时检查写入了多少字节很重要。

现在如何阻止写入?什么时候阻塞?什么时候叫冲洗?当你在它的 OutputStream 上调用 write 时?它会阻塞直到底层写套接字缓冲区中有空间吗?还是写不出来会抛出异常?

最佳答案

是的,它会阻塞,直到底层操作系统套接字发送缓冲区中有足够的空间来复制您的字节。这可能发生在您将数据放入与套接字关联的 Java OutputStream 中时,或者当您调用 flush(),以调用实际 write(2) 系统调用为准。

关于java - Java 中的阻塞套接字写入和非阻塞套接字写入有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com