如果我在java套接字上设置soTimeout,主动对等对被动对等体的行为将会是什么。例如,如果我有一个readtimeout值1分钟,并有一个文件传输,并需要5分钟,它会得到readtimeout异常或不?对于我来说,当连接挂起时它有必要获得超时异常。java套接字超时行为
回答
soTimeout
设置显式影响从套接字输入流中读取的操作。您可以将其视为允许调用者在读取操作中定义一个定时块。从Javadoc获取setSoTimeout
:
使用指定的超时(以毫秒为单位)启用/禁用SO_TIMEOUT。 如果将此选项设置为非零超时,则与此套接字关联的 InputStream上的read()调用将仅阻塞此 时间量。如果超时到期,将引发一个 java.net.SocketTimeoutException异常,但Socket仍然是 有效。
在被动对等体的情况下,由于对等体没有调用read
,所以不会引发超时。但是,如果它确实进行了读取调用,则调用必须在soTimeout
到期之前返回数据,否则将引发SocketTimeoutException。
谢谢。为了清楚起见,如果我设置readtimeout 1分钟并在套接字上调用read(),则即使服务器继续在另一端写入,此方法也会引发异常。是对的吗 ? – cacert 2013-03-12 14:37:11
@cacert - 好吧,不一定。超时时间取决于* client *端的阻塞读取等待的时间。所以,如果你的服务器正在写数据,但由于某种原因,它在'soTimeout'启动之前不会显示在客户端缓冲区中,那么是的话,就会引发一个异常。但只要客户端'read'在超时之前返回一些数据,就不会引发异常。 – Perception 2013-03-12 14:52:18
好的,这是可以接受的。那么我认为我们可以说,超时以某种方式与非活动会话相关,如果我们有一个长时间但活动的会话(我们定期在超时持续时间之前每次检索数据),那么读取超时将不成问题。谢谢。 – cacert 2013-03-13 06:49:26
- 1. 套接字超时套接字编程
- 2. Java套接字:超时异常
- 3. Java套接字读取超时异常
- 4. 读取期间Java套接字超时
- 5. Java,增加套接字超时
- 6. Java:套接字读取超时异常
- 7. Java套接字超时不起作用
- 8. Java套接字超时错误
- 9. 套接字连接超时
- 10. Google BigQuery套接字超时
- 11. Android TCP套接字超时
- 12. AS3:套接字超时
- 13. 套接字超时Node.js的
- 14. Apache FlexUnit套接字超时
- 15. 套接字超时Tomcat7
- 16. android onActivityResult套接字超时
- 17. 套接字已超时
- 18. Icinga - check_yum - 套接字超时?
- 19. php套接字超时
- 20. LUA HTTP套接字超时
- 21. Android - 套接字超时
- 22. 套接字超时实现
- 23. 套接字超时IPN
- 24. C#套接字超时
- 25. android-套接字连接时超时
- 26. Python套接字连接超时
- 27. 套接字等待连接超时
- 28. 接受套接字函数超时
- 29. 活动套接字连接超时?
- 30. Linux:从套接字接收超时?
“被动同伴”是什么意思? TCP中的“被动”用于指代监听套接字,它根本没有读取或读取超时。 – EJP 2013-03-12 22:28:47