在java中,Socket有一个方法setSoTimeout
,可用于指定reading
超时,但没有方法可以指定writing
超时
当我搜索谷歌时,很多回复如“use nio and selectors
”,看起来SocketChannel
提供了指定writing
超时的方法,我简要介绍了这个类的代码,但我仍然没有找到如何做到这一点。
有人可以展示一些代码或一些指南吗?感谢
答案 0 :(得分:0)
缓解写入调用缺少超时选项的一种可能方法是简单地将SO_SNDBUF
大小通过Socket.setSendBuffer
设置为非常高的值。这将允许后续写入调用以避免阻塞,除非备份到远程端的管道。如果可能,请构建协议,以便在发送更多数据之前等待对已发送数据的某种响应。这样,你就不会超过发送缓冲区。
因人而异。