Stripies
Stripies

Reputation: 1267

ObjectOutputStream not sending data

Client code:

try {
            Socket socket = new Socket(ip, port);
            OutputStream output = socket.getOutputStream();
            ObjectOutputStream out = new ObjectOutputStream(output);
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            out.writeByte(1);
            FileHandler fh = (FileHandler) in.readObject();
            //processing stuff
            out.flush();
            out.close();
            output.flush();
            output.close();
            input.close();
            in.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

Server code:

        try {
            ServerSocket server = new ServerSocket(port);
            Socket socket = server.accept();
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            int type = in.readByte();
            //processing stuff (which includes closing the streams and sending FileHandler object)
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

The server never receives the byte. It just waits for the byte from the client, and it never comes. I'm not sure why it isn't sending, or getting received. Any help is much appreciated.

Upvotes: 0

Views: 1953

Answers (2)

Alex Calugarescu
Alex Calugarescu

Reputation: 848

Try to use the writeObject and readObject methods. Also write an Integer not an int to the stream. Read this really good lecture before proceeding any further.

This is also a good lecture for your problem.

Regards!

Upvotes: 1

Brian Roach
Brian Roach

Reputation: 76918

If I had to make a guess it's because in your client you block on in.readObject(); waiting for the server to send you something thus never flush the output stream thus ... nothing ever gets sent.

Move your read to after you flush your output stream.

Upvotes: 3

Related Questions