Solved

How do I keep my connection from getting reset?

Posted on 2008-06-23
2
1,579 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
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

Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

Question has a verified solution.

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

Suggested Solutions

This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Article by: kevp75
Hey folks, 'bout time for me to come around with a little tip. Thanks to IIS 7.5 Extensions and Microsoft (well... really Windows 8, and IIS 8 I guess...), we can now prime our Application Pools, when IIS starts. Now, though it would be nice t…
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:

825 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