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秒後超時? –