socketexception: recvfrom failed: ETIMEDOUT(连接超时)



我做HTTP请求太频繁,一段时间后得到这个例外:

java.net.SocketException: recvfrom failed: ETIMEDOUT(连接超时)

我已经把这些相关的文章都看过了。

但是我不知道如何解决这个问题。他们提到要清除DNS缓存,但我需要在运行时清除它,这样我的执行就不会停止工作,这在Android中是不可能的。

有谁能告诉我解决办法吗?

这是我的日志:

06-04 11:14:08.119: W/System.err(8338): java.net.SocketException:recvfrom failed: ETIMEDOUT(连接超时)06-04 11:14:08.139:(8338): W/system . errlibcore.io.IoBridge.maybeThrowAfterRecvfrom 06-04 (IoBridge.java: 552)11:14:08.139: W/System.err(8338): atlibcore.io. ibridge .recvfrom(ibridge .java:516) 06-04 11:14:08.139:(8338): W/system . errjava.net.PlainSocketImpl.read 06-04 (PlainSocketImpl.java: 489)11:14:08.139: W/System.err(8338): at(PlainSocketImpl.java: 46) 06-04 java.net.PlainSocketImpl.access 000美元11:14:08.139: W/System.err(8338): atjava.net.PlainSocketImpl PlainSocketInputStream.read美元(PlainSocketImpl.java: 241)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer (AbstractSessionInputBuffer.java: 103)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.io.AbstractSessionInputBuffer.readLine (AbstractSessionInputBuffer.java: 191)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.conn.DefaultResponseParser.parseHead (DefaultResponseParser.java: 82)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.io.AbstractMessageParser.parse (AbstractMessageParser.java: 174)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader (AbstractHttpClientConnection.java: 180)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader (DefaultClientConnection.java: 235)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader (AbstractClientConnAdapter.java: 259)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.protocol.HttpRequestExecutor.doReceiveResponse (HttpRequestExecutor.java: 279)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.protocol.HttpRequestExecutor.execute (HttpRequestExecutor.java: 121)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.DefaultRequestDirector.execute (DefaultRequestDirector.java: 428)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.AbstractHttpClient executerequestsending 1.美元(AbstractHttpClient.java: 608)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSendingUsual (NafRequestExecutorWrapperRedirectionHandler.java: 96)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.naf.redirect.NafRequestExecutorWrapperRedirectionHandler.executeRequestSending (NafRequestExecutorWrapperRedirectionHandler.java: 73)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.sendFirstRequest (NafHttpAuthStrategyDefault.java: 488)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecutionUnsafe (NafHttpAuthStrategyDefault.java: 389)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.naf.auth.NafHttpAuthStrategyDefault.performAuthExecution (NafHttpAuthStrategyDefault.java: 200)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java: 557)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java: 509)06-04 11:14:08.139: W/System.err(8338): atorg.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java: 487)

参见http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg23588.html: "如果TCP连接超时,或者通过keepalive超时,或者协议达到最大传输重试次数,您可以获得此消息。"它和DNS没有任何关系

最新更新