Java: Cleaning up what causes a connection reset
        Posted  
        
            by Zombies
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Zombies
        
        
        
        Published on 2010-04-22T15:48:04Z
        Indexed on 
            2010/04/29
            5:57 UTC
        
        
        Read the original article
        Hit count: 471
        
There seems to be some confusion as well contradicting statements on various SO answers: http://stackoverflow.com/questions/585599/whats-causing-my-java-net-socketexception-connection-reset . You can see here that the accepted answer states that the connection was closed by other side. But this is not true, closing a connection doesn't cause a connection reset. It is cauesed by "an underlying TCP/IP error."
What I want to know is if a SocketException: Connection reset means really besides "unerlying TCP/IP Error." What really causes this? As I doubt it has anything to do with the connection being closed (since closing a connection isn't an exception worthy flag, and reading from a closed connection is, but that isn't an "underlying TCP/IP error."
My hypothesis is this
Connection reset is caused from a server's failure to acknowledge an ACK packet (either wholly or just improperly as per TCP/IP). And that a SocketTimeoutException is generated only when no data is generated to be read (since this is thrown during a read after a certain duration, and read is waiting for data, but is not concerned with ACK packets). In other words, read() throws SocketTimeoutException if it didn't read any bytes of actual data (DATA LAYER) in its allotted time.
© Stack Overflow or respective owner