3个问题:

  1. 套接字的connectionread超时之间有什么区别?

  2. connection超时设置为"无限"是什么意思?在什么情况下,它才能保持无限循环呢?是什么触发了无限循环的消亡呢?

  3. read超时设置为"无限"意味着什么?在什么情况下它可以保持在不定式循环中?什么能触发无限循环死亡?

推荐答案

  1. 套接字的连接和读取超时之间有什么区别?

连接超时是进行初始连接时的超时;i、 e.完成TCP连接握手.读取超时是等待读取数据的超时时间1.如果服务器(或网络)无法传送任何数据<;超时>;在客户端进行套接字read调用几秒钟后,将引发读取超时错误.

  1. 将连接超时设置为"无限"意味着什么?在什么情况下,它才能保持无限循环呢?是什么触发了无限循环的消亡呢?

这意味着连接try 可能永远是挡路.没有无限循环,但是连接try 可以通过另一个关闭套接字的线程来解除阻塞.(拨打Thread.interrupt()也可以做到这一点…不确定.)

  1. 读取超时设置为"无限"意味着什么?在什么情况下,它可以保持在一个无限循环中?什么能触发无限循环结束?

这意味着套接字流上对read的调用可能会永远阻塞.同样,没有无限循环,但read可以通过Thread.interrupt()调用、关闭套接字和(当然)另一端发送数据或关闭连接来解锁.


1-它不是...正如一位 comments 者所想...套接字可以打开或空闲多长时间的超时

Java相关问答推荐

无法从TemporalAccessor获取Instant:{},ISO解析为2024-04- 25 T14:32:42类型为java.time. form.Parsed

javafx getHostServices(). showDocument()调出Chrome而不是默认浏览器(Linux)

try Dockerize Maven应用程序,但发布版本21不支持"

表格栏上的事件过滤器在PFA中不起作用

基于仅存在于父级中的字段查询子文档?

使用JdkClientHttpRequestFactory通过Spring RestClient和Wiemock读取时达到EOF

Spring Boot@Cachebale批注未按预期工作

嵌入式ActiveMQ Artemis Web控制台加载错误

只需最少的代码更改即可将版本号标记添加到日志(log)

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

Mac上的全屏截图在使用JavaFX时不能正常工作吗?

Java构造函数分支

如何在JavaFX循环中完美地制作一个AudioClip/MediaPlayer?

有没有可能在时间范围内得到多种解决方案?

如何在透视表中添加对计数列的筛选?

无法使用Java PreparedStatement在SQLite中的日期之间获取结果

如果执行@BeForeEach#repository.save(),则测试中的UnitTest最终UUID会发生更改

为什么相同的数据条码在视觉上看起来不同?

在权限列表中找不到我的应用程序

Java 21内置http客户端固定运营商线程