java / groovy套接字写入超时

我有一个简单的行为不端的服务器(用Groovy编写)

ServerSocket ss = new ServerSocket(8889);
Socket s = ss.accept()
Thread.sleep(1000000)

我想超时的客户端(因为服务器没有使用它的输入)

Socket s = new Socket("192.168.0.106", 8889)
s.setSoTimeout(100);
s.getoutputStream.write( new byte[1000000] );

但是,此客户端将永远阻塞.如何使客户端超时?

谢谢!!

解决方法:

您可以在其自己的线程中生成客户端,并在其上旋转锁/等待(超时时间长)以返回.如果Socket成功,则可能使用Future对象获取返回值.

我确实相信,套接字的SO_TIMEOUT设置只会影响从套接字的read(..)调用,而不会影响写入.

您可以尝试使用SocketChannel(而不是Stream),并生成一个具有该Channel句柄的线程.另一个线程可以在某个超时被阻止后异步关闭该通道.

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...