Search code examples
javatcpclientpacket

Java EOFException Server/Client TCP application


I am running 2 threads in my applciation. One to check for incoming packets and one to process and send packets. They both do it on the SAME STREAM.

Example for 1:

while (connection open) {
    in.readObject() instanceof ...
}

Example for 2:

while (connection open) {
    processPacket(in)
}

I'm pretty sure EOFException is when the threads try and use the stream at the same time. It's not a constant EOF but only like every 1 second I get an EOF the rest works fine. So that's why I suspect that they overlap and try to use the stream at the same time.

If that is the problem, anyone know how do I synchronize them to do it after another while still keeping the current update speed and using two threads?

I need two threads because the check for incoming waits in a line until a packet gets recived and I need the server to constantly send process and check for packets.

How do I fix the EOFException?


Solution

  • If your getting an EOFException, it typically means the other side hung up. You usually get these on the read side.

    Here's a similar SO question

    Edit 1: The question is really why is the socket closed. It can be for any number of reasons, a programmable timer on the server side checking for no data within X minutes, a firewall closing the connection, a network interruption, etc..