I have an HTTP server in Android. I create a new stream for each of the HTTP requests, as indicated in the link:
http://hc.apache.org/httpcomponents-core-ga/httpcore/examples/org/apache/http/examples/ElementalHttpServer.java .
When I issue multiple GET requests, sometimes I get an exception similar to the following:
01-22 10:28:22.779: W/System.err(2019): java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer) 01-22 10:28:22.779: W/System.err(2019): at libcore.io.IoBridge.maybeThrowAfterRecvfrom(IoBridge.java:552) 01-22 10:28:22.779: W/System.err(2019): at libcore.io.IoBridge.recvfrom(IoBridge.java:516) 01-22 10:28:22.779: W/System.err(2019): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488) 01-22 10:28:22.779: W/System.err(2019): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 01-22 10:28:22.784: W/System.err(2019): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 01-22 10:28:22.784: W/System.err(2019): at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103) 01-22 10:28:22.784: W/System.err(2019): at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191) 01-22 10:28:22.784: W/System.err(2019): at org.apache.http.impl.io.HttpRequestParser.parseHead(HttpRequestParser.java:71) 01-22 10:28:22.784: W/System.err(2019): at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174) 01-22 10:28:22.784: W/System.err(2019): at org.apache.http.impl.AbstractHttpServerConnection.receiveRequestHeader(AbstractHttpServerConnection.java:141) 01-22 10:28:22.784: W/System.err(2019): at org.apache.http.protocol.HttpService.handleRequest(HttpService.java:135) 01-22 10:28:22.784: W/System.err(2019): at com.example.devicecommunication.ConnectService$WorkerThread.run(ConnectService.java:744) 01-22 10:28:22.784: W/System.err(2019): Caused by: libcore.io.ErrnoException: recvfrom failed: ECONNRESET (Connection reset by peer) 01-22 10:28:22.784: W/System.err(2019): at libcore.io.Posix.recvfromBytes(Native Method) 01-22 10:28:22.784: W/System.err(2019): at libcore.io.Posix.recvfrom(Posix.java:131) 01-22 10:28:22.784: W/System.err(2019): at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:164) 01-22 10:28:22.789: W/System.err(2019): at libcore.io.IoBridge.recvfrom(IoBridge.java:513) 01-22 10:28:22.789: W/System.err(2019): ... 10 more
I do not know why this is happening. The code is below, and this exception occurs with the handleRequest () method or in conn.close ().
class WorkerThread extends Thread{ HttpService httpService; HttpServerConnection conn; public WorkerThread(HttpService httpService, HttpServerConnection conn){ super(); this.httpService = httpService; this.conn = conn; } public void run(){ HttpContext context = new BasicHttpContext(null); try { Log.d(TAG,"Going to call Handle request here"); this.httpService.handleRequest(this.conn, context); } catch (ConnectionClosedException ex) { ex.printStackTrace(); Log.d(TAG,"Client closed connection exception"); } catch (IOException ex) { ex.printStackTrace(); Log.d(TAG,"I/O exceptionnnnn " + ex.getMessage()); } catch (HttpException ex) { Log.d(TAG,"Unrecoverable HTTP protocol violation: " + ex.getMessage()); } finally { Log.d(TAG,"Inside Finally Block"); try { this.conn.close(); Log.d(TAG,"Connection closed successfully"); } catch (IOException e) {
Any idea why this is happening or how this can be resolved?
source share