如何在Java Socket上超时读取?

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

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

如果此套接字是通过URLConnection创建的以执行Web请求,则可以在读取流之前直接在URLConnection上设置读取和连接超时:

 InputStream createInputStreamForUriString(String uriString) throws IOException, URISyntaxException { URLConnection in = new URL(uriString).openConnection(); in.setConnectTimeout(5000); in.setReadTimeout(5000); in.setAllowUserInteraction(false); in.setDoInput(true); in.setDoOutput(false); return in.getInputStream(); } 

是的,应该有一个覆盖Read()接受超时值。 通过’覆盖’我不建议任何人一个,我指出他正在使用的套接字方法的一个覆盖取一个超时值。