0
的我创建了一个新的Socket超时,并用它来与服务器进行通信:安卓:修改“的getInputStream”
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秒后ECONNRESET异常而不是60秒?
setSoTimeout不会影响发生断开连接时引发的ECONNRESET异常。 – Denis
你的意思是设置mySocket.setSoTimeout(3000);不会让套接字在3秒后超时? –