如何在Java Socket上超时读取?

Mas*_*ban 19 java sockets timeout inputstream

我正在尝试从套接字读取项目,我注意到如果套接字流上没有任何内容,它将保留在读取并备份我的应用程序.我想知道是否有一种方法可以设置读取超时或在套接字中没有任何时间后终止连接.

eri*_*son 23

如果您编写Java,学习导航API文档会很有帮助.在套接字读取的情况下,您可以设置超时选项.

  • Stackoverflow比API文档要好得多。请注意,这是如何出现在Google搜索而不是API文档中的。 (3认同)
  • StackOverflow 是一个获取想法的好地方,但这里的很多信息都不是最优的,或者根本就是错误的。在没有通过主要来源验证或测试的情况下依赖您在这里找到的内容是草率的。 (3认同)

Kel*_*nch -5

是的,应该重写 Read() 来接受超时值。通过“覆盖”,我并不是建议任何人编写一个,而是指出他正在使用的套接字方法的覆盖之一需要一个超时值。

  • 不,不应该。这将使“SocketInputStream” API 与其他流不同。已经有一种方法可以做到这一点,并且不会破坏“InputStream”的可替代性。 (7认同)