Solved

How do I keep my connection from getting reset?

Posted on 2008-06-23
2
1,582 Views
Last Modified: 2013-12-29
I have a Java applet that uploads and downloads files to a server. With one file in particular, I'm always getting the same exception thrown:
java.net.SocketException:Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at...
    at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
    at FTA.copyInputStream(FTA.java:1023)
    etc
and also
java.net.SocketException: Connection reset
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(Unknown Source)
    at...
    at FTA.DownloadZipFile(FTA.java:756)
    etc.
Caused by javax.net.ssl.SSLException: java.net.SocketException: Connection reset
    at...
    at FTA.copyInputStream(FTA.java:1023)
    at FTA.DownloadZipFile(FTA.java:754)
    ... 5 more
Caused by java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    ... 19 more
My question is: what does this mean (beyond the obvious) and how do I get my connection to not reset itself? Thanks.
// FTA.java
 
private String DownloadZipFile()
{
  File f = null;
  try 
  {
    URL u = new URL(Url);
    HttpURLConnection conn = (HttpURLConnection)u.openConnection();
 
    InputStream is = conn.getInputStream();
    f =  File.createTempFile("FTA", ".tmp");
    f.deleteOnExit();
    FileOutputStream fw = new FileOutputStream(f);
    int size = conn.getContentLength();
 
    BufferedOutputStream bos = new BufferedOutputStream( fw );
    copyInputStream(is, bos, size, true );     // line 754
 
    is.close();                                // line 756
    bos.close();
    fw.flush();	
    fw.close();
 
    return f.getAbsolutePath();
  }
  catch (SocketException sx)
  {
    System.err.println(sx.getMessage());
    sx.printStackTrace();
    return null;
  }
  finally {
    if(f != null) { f.delete(); }
  }
}
 
private void copyInputStream(InputStream in, OutputStream out, int totalLength, boolean showProgress) throws IOException
{
  try
  {
    byte[] buffer = new byte[1024];
    Date start = new Date();
 
    int bytesSent = 0;
    int len;                //line 1023 -- how is this throwing an exception???
 
    while ((len = in.read(buffer)) >= 0 && !shouldCancel)
    {
      bytesSent += len;
      out.flush();
    }
    out.flush();
  }
// We might need to try throwing these to the calling method.
  catch (SocketException sx)
  {
    System.err.println(sx.getMessage());
    sx.printStackTrace();
  }
  catch (IOException iox)
  {
    System.err.println(iox.getMessage());
    iox.printStackTrace();
  }
// there should be a finally clause right here to deal with the socket
// resetting the connection
}

Open in new window

0
Comment
Question by:tjgquicken
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 21850185
I don't understand how copyInputStream is working *at all* - nothing is written to the OutputStream
0
 
LVL 92

Accepted Solution

by:
objects earned 500 total points
ID: 21851263
You can't stop that, it is caused by the client disconnecting. eg. if they cancel the upload/download.
You should instead detect it occurring and handle it garcefully (by basically ignoring it and cancell up/download)

0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
When it comes to showing a 404 error page to your visitors, you do not want that generic page to show, and you especially do not want your hosting provider’s ad error page to show either. In this article, I will show you how to enable the custom 40…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

717 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question