Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置套接字上的写入超时_Java_Sockets - Fatal编程技术网

Java 如何设置套接字上的写入超时

Java 如何设置套接字上的写入超时,java,sockets,Java,Sockets,在java中,套接字有一个方法setSoTimeout,可用于指定读取超时,但没有方法指定写入超时 当我 在google上搜索了很多响应,比如“使用nio和选择器””,看起来SocketChannel提供了指定写入超时的方法,我简要介绍了这个类的代码,但我仍然没有找到如何做 有人能给我看些代码或指南吗?感谢缓解写调用中缺少超时选项的一种可能方法是通过Socket.setSendBuffer将SO_SNDBUF大小设置为非常高的值。这将允许后续的写入调用,以避免阻塞,除非到远程端的管道得到备份。如

在java中,套接字有一个方法
setSoTimeout
,可用于指定
读取
超时,但没有方法指定
写入
超时

当我 在google上搜索了很多响应,比如“
使用nio和选择器”
”,看起来
SocketChannel
提供了指定
写入
超时的方法,我简要介绍了这个类的代码,但我仍然没有找到如何做


有人能给我看些代码或指南吗?感谢

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


YMMV.

您检查过这个吗?谢谢@PrashantPuri。是的,该链接提到了
使用nio和选择器
,但没有说明如何使用。他肯定说了如何使用,或者更确切地说是提供了一个“如何使用”。@EJP哪个链接,对不起,我没有找到该链接@汤姆把那个链接给我了。他提供的那个。我提供的那个。你在最近的评论中提到的那个。