有什么可以java.net.SocketException异常的原因:recvfrom的失败:ETIMEDOUT? [英] What can be a cause of java.net.SocketException: recvfrom failed: ETIMEDOUT?
本文介绍了有什么可以java.net.SocketException异常的原因:recvfrom的失败:ETIMEDOUT?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的应用程序得到了这个问题。这是罕见的,很难被发现。这是一个堆栈:
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
问候。
这篇关于有什么可以java.net.SocketException异常的原因:recvfrom的失败:ETIMEDOUT?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文