Connection reset simply means that a TCP RST was received. This happens when your peer receives data that it can’t process, and there can be various reasons for that. A reset packet is simply one with no payload and with the RST bit set in the TCP header flags. The simplest is when you close the java socket, and then write more data on the output stream. By closing the socket, you told your peer that you are done talking, and it can forget about your connection. When you send more data on that stream anyway, the peer rejects it with an RST to let you know it isn’t listening.
There are several possible causes.
- The other end has deliberately reset the connection.
- Writing to a connection that the other end has already closed
- Closing a socket when there is unread data in the socket receive buffer.
- In Windows, ‘software caused connection abort’, which is not the same as ‘connection reset’, is caused by network problems sending from your end.