如何在使用套接字连接创建的BufferedReader和PrintWriter上设置超时?这是我现在为服务器提供的代码,该代码将一直工作到服务器或客户端崩溃为止:
while(isReceiving){
str = null;
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
while ((str = br.readLine()) != null){
System.out.println("Processing command " + str);
pw.println(client.message(str));
}
}
在此代码范围之外,我施加了1000ms的套接字超时,它在等待初始连接时按预期工作。但是该程序在(str =
br.readLine())处阻塞。如果客户端挂起或崩溃,则除非我终止该进程,否则它永远不会停止阻塞(即使那样也并不总是起作用)。
有问题的客户端代码与此非常相似,并且以类似的方式进行阻塞。
由于调用socket.close()似乎并未中断br.readLine()处的块,因此我做了一些解决方法。当断开客户端与服务器的连接时,我仅发送字符串“
bye”,并告诉服务器在收到此命令时关闭套接字连接。
while ((str = br.readLine()) != null){
// If we receive a command of "bye" the RemoteControl is instructing
// the RemoteReceiver to close the connection.
if (str.equalsIgnoreCase("bye")){
socket.close();
break;
}
System.out.println("Processing command " + str);
pw.println(client.message(str));
}
问题内容: 我正在尝试在使用http.request且没有运气的HTTP客户端上设置超时。到目前为止,我所做的是: 有什么提示吗? 问题答案: 现在可以使用option和相应的request事件:
我在我的项目中设置了一个RestTemplate和一个AsyncRestTemplate,如下所示: 我注意到连接超时实际上并不起作用,除非我将httpRequestFactory()bean更改为如下所示: 如果我将DEFAULT_READ_TIMEOUT_MILLISECONDS设置为5,则当我使用restTemplate时会发生超时(正如预期的那样)。但是,当我使用AsyncRestTemp
Spring docs表示,需要手动为WebClient配置http客户机以设置超时:https://docs.Spring.io/Spring/docs/current/spring-framework-reference/web-reactive.html#webflux-client-builder-reactor-timeout。但是,由于WebClient返回反应单声道,所以可以(在AP
问题内容: 我org.springframework.ws.client.core.WebServiceTemplate用于拨打Web服务。如何为通话配置超时。 问题答案: 如果你使用的是Spring Webservices 2.1.0版本,则可以使用HttpComponentsMessageSender设置超时。 Spring不推荐使用CommonsHttpMessageSender,因此不再推
我正在尝试在我的WebClient上设置超时,以下是当前代码: 我需要添加超时和池策略,我在想这样的事情: 但是我不知道如何在我的webclient中设置httpClient
我有一些可能需要一段时间才能执行的REST API,我想限制它们的执行持续时间。优选地,如果30秒过去了并且请求没有返回,我希望返回特定的HTTP代码/数据并完全终止该请求。 当前代码: