如何在Socket上设置写超时

时间:2017-09-19 05:10:21

标签: java sockets

在java中,Socket有一个方法setSoTimeout,可用于指定reading超时,但没有方法可以指定writing超时

当我搜索谷歌时,很多回复如“use nio and selectors”,看起来SocketChannel提供了指定writing超时的方法,我简要介绍了这个类的代码,但我仍然没有找到如何做到这一点。

有人可以展示一些代码或一些指南吗?感谢

1 个答案:

答案 0 :(得分:0)

缓解写入调用缺少超时选项的一种可能方法是简单地将SO_SNDBUF大小通过Socket.setSendBuffer设置为非常高的值。这将允许后续写入调用以避免阻塞,除非备份到远程端的管道。如果可能,请构建协议,以便在发送更多数据之前等待对已发送数据的某种响应。这样,你就不会超过发送缓冲区。

因人而异。