【发布时间】:2017-07-27 13:47:36
【问题描述】:
我创建了一个新的 Socket 并使用它与服务器进行通信:
mySocket = new Socket();
mySocket.connect(new InetSocketAddress(Network.SERVER_ADDRESS, Network.SERVER_PORT), (int) (3 * DateUtils.SECOND_IN_MILLIS));
mySocket.setSoTimeout(0);
try {
while (!Thread.currentThread().isInterrupted()) {
ObjectInputStream objectInputStream = new ObjectInputStream(new BufferedInputStream(mySocket.getInputStream()));
MessageContent messageContent = (MessageContent) objectInputStream.readObject();
Network._readMessage(context, messageContent);
}
}
catch (Exception exception) {
exception.printStackTrace();
}
它工作正常。但是,当服务器不可用时,恰好在 60 秒后引发以下异常:
java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
这是完全正常的行为。没关系。 但顺便说一句,我的问题是:如何修改超时持续时间,以便在断开连接后 3 秒而不是 60 秒引发 ECONNRESET 异常?
【问题讨论】:
标签: java android sockets connection timeout