有什么可以java.net.SocketException异常的原因:recvfrom的失败:ETIMEDOUT?有什么、异常、原因、java

由网友(奈何桥边摆渡人)分享简介:我在我的应用程序得到了这个问题。这是罕见的,很难被发现。这是一个堆栈:I have got this issue in my app. It is rare and difficult to spot. This is a stack:2012-11-30 08:42:22.745myapp.package.MyC...

我在我的应用程序得到了这个问题。这是罕见的,很难被发现。这是一个堆栈:

I have got this issue in my app. It is rare and difficult to spot. This is a stack:

2012-11-30 08:42:22.745myapp.package.MyCommand is failed.java.net.SocketException: recvfrom failed: ETIMEDOUT (Connection timed out)
at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:542)
at libcore.io.IoBridge.recvfrom(IoBridge.java:506)
at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:252)
at myapp.package.HttpCommand.executeRequest(HttpCommand.java:176)
at myapp.package.HttpCommand.execute(HttpCommand.java:83)
at myapp.package.NetworkService$1.run(NetworkService.java:60)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: libcore.io.ErrnoException: recvfrom failed: ETIMEDOUT (Connection timed out)
at libcore.io.Posix.recvfromBytes(Native Method)
at libcore.io.Posix.recvfrom(Posix.java:131)
at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164)
at libcore.io.IoBridge.recvfrom(IoBridge.java:503)
... 26 more

在我的应用程序我有一个执行所有指令到​​服务器类:

In my app I have a class that executes all command to the server:

private static final AndroidHttpClient client = AndroidHttpClient.newInstance(TAG);

HttpUriRequest request = getRequest(context);
        HttpResponse response = client.execute(request);
        final int statusCode = response.getStatusLine().getStatusCode();
        if (HttpStatus.SC_OK == statusCode) {
            final String json = EntityUtils.toString(response.getEntity());
            handleResult(json);
            Log.i(TAG, json);
        } else {
            handleError(SERVER_CODE);
        } 

你有任何想法是什么这个问题的原因是什么?

Do you have any ideas what is the cause of this issue?

推荐答案

在收到连接超时的错误,我会找:

When receiving a "Connection Timeout" error, I would look for:

在重负载的网络连接 在重负载的服务器 在不充分的连接超时参数会话 在冰淇淋三明治和早期检查有关DNS缓存加倍。请参阅 DNS缓存在的InetAddress 和发行7904:Android不支持TTL和缓存10分钟 DNS结果 Heavy loaded network connection Heavy loaded server Inadequate connection timeout parameters for the session In Ice Cream Sandwich and earlier check if related to DNS double caching. See DNS caching in InetAddress and Issue 7904: Android does not support TTL and caches DNS result for 10 minutes

问候。

阅读全文

相关推荐

最新文章