gpt4 book ai didi

java - 如果您正在使用缓冲读取器读取整行,那么在套接字上设置超时是否有效?

转载 作者:搜寻专家 更新时间:2023-11-01 03:12:09 25 4
gpt4 key购买 nike

我正在编写一个套接字客户端,它通过套接字连接发送一条线路,然后最多等待 45 秒以等待从服务器返回的线路。

我正在使用这样的缓冲阅读器:

Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
socket = new Socket(host, 800);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
} catch (UnknownHostException e) {
listener.failedToConnectToHost(e);
return;
} catch (IOException e) {
listener.failedToConnectToHost(e);
return;
}

BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
out.println("message");
try {
String response = in.readLine();
listener.responseRecived(response);
return;
} catch (IOException e) {
listener.errorReadingResponse(e);
return;
}

如果我添加以下行(或类似的内容)

socket.setSoTimeout(45000);

假设另一端没有任何信号通过,45 秒后会发生什么?

我假设我会捕捉到一个中断的异常,但我确定?

这会起作用吗? setSOTImeOut() 的文档暗示它是 socket.read() 会超时,我假设缓冲读取器在堆栈的某个地方调用它,但假设是所有搞砸的根源,所以我只是想检查一下。

最佳答案

BufferedReader.readLine() 方法将在 45 秒后抛出一个 SocketTimeoutException

关于java - 如果您正在使用缓冲读取器读取整行,那么在套接字上设置超时是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com