可能是java.net.SocketException的原因:recvfrom失败:ETIMEDOUT? - java

我的应用程式中有这个问题。这是罕见的,很难发现。这是一个堆栈:

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

在我的应用程序中,我有一个类,它执行对服务器的所有命令:

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);
        } 

您有什么想法导致此问题的原因吗?

参考方案

收到“连接超时”错误时,我将寻找:

  • 重载网络连接
  • 重载服务器
  • 会话的连接超时参数不足
  • 在“冰淇淋三明治”中,以及更早的版本是否与DNS双重缓存有关。请参阅InetAddress和Issue 7904: Android does not support TTL and caches DNS result for 10 minutes
  • 中的DNS caching
    问候。

    从JAVA调用方法C#.NET - java

    我有一个C#.NET项目中创建的dll,我想从Java程序中调用方法。我想知道是否存在实现此目标的机会,然后遇到了JNA和JNI。我应该使用哪一个?有什么建议么?我只需要在使用C#.NET编写的类中调用方法并处理Java程序的结果即可。 参考方案 这取决于您的应用程序,但是您可以将C#DLL放在服务中,例如WCF并以这种方式将功能公开给Java代码。使用ws…

    java.net.URI.create异常 - java

    java.net.URI.create("http://adserver.adtech.de/adlink|3.0") 抛出java.net.URISyntaxException: Illegal character in path at index 32: http://adserver.adtech.de/adlink|3.0 虽然n…

    java.net.UnknownHostException无法连接到ftp - java

    我的ftp端口为:ftp://173.201.0.1/我正在尝试通过以下方式将其连接:String Ftp_Path = "ftp://173.201.0.1/"; public List<String> GetFileList() { String ftpServerIP = Ftp_Path; String ftpUser…

    您知道处理网络白板的框架吗? - java

    我正在寻找一个提供白板标准管理的框架。例如,一个区域,网络用户可以使用鼠标在该区域上绘制一些内容,并在发布表单时将其保存到服务器(例如)。 (Php,Java,.net吗?) 参考方案 http://cristian.nexcess.net/ajax/whiteboard/

    无法访问可移植类库中的类 - java

    我是移动开发和Xamarin的新手。我正在尝试创建一个类的实例,该类可以在相同解决方案(HotDog和HotDogDataService)下的另一个项目中找到。我使用红色The type or namespace name 'RaysHotDogs' could not be found得到红色下划线。为什么我不能在该项目中实例化这些类?…