Java: Reading from ObjectInputStream?

EOFException is thrown from readObject when the stream ends. In your case, when the client closes its connection. So if the client sends an object to the server and immediately quits, the server will read one object and get EOFExcpetion the next time it tries to read an object, on the now closed connection.

Up vote 0 down vote favorite share g+ share fb share tw.

I have only started learning Java. My task is to create a file server which accepts certain commands like File Get, File Put and File Delete from multiple clients using Threading. I am using a custom class DataObject to serialize and send commands and any data that may accompany with it.

The client is to be made interactive in the sense that it involves manual user input of the various commands. This means that ObjectInputStream readObject() function will not work in a while(true) loop because of an EOFException. What can I do so that the server thread pauses at readObject() until it sees the next object and then resumes the while(true) loop?

Code at server (runs for each thread separately): public void run() { ObjectInputStream is = null; ObjectOutputStream os = null; try{ is = new ObjectInputStream(clientSocket.getInputStream()); os = new ObjectOutputStream(clientSocket.getOutputStream()); while (true) { input = (DataObject) is.readObject(); //System.out. Println("Input has been read"); output = CommandProcessor. Process(input); if(output.

Data == null) { os. WriteObject(output); if(output.message. CompareToIgnoreCase("Rsp Bye")==0){ clientSocket.close(); } } } } Code at client: public Talker() { DataObject input = new DataObject(0), output = new DataObject(0); try { log = new PrintStream("/home/meher/log.

Txt"); InetAddress serverAddress = InetAddress. GetByName("127.0.0.1"); Socket serverSocket = new Socket(serverAddress, port); os = new ObjectOutputStream(serverSocket.getOutputStream()); is = new ObjectInputStream(serverSocket.getInputStream()); CommandExecuter. Hello(output); write(output); read(input); while(not-end-of-user-input){ //Yet to code this part //Execute commands } } java sockets objectinputstream link|improve this question edited Sep 26 '10 at 17:04 asked Sep 26 '10 at 16:39Anand43418 76% accept rate.

3 I should say that it's a pretty hard task for a person who 'only started learning Java'. – Roman Sep 26 '10 at 16:42 It is an assignment due tomorrow in a Distributed Operating Systems course. Java is the language expected.

– Anand Sep 26 '10 at 16:51 Please not that I did not bother putting in the catch part of the Exception handlers here but they're there in the code. – Anand Sep 26 '10 at 17:06.

EOFException is thrown from readObject when the stream ends. In your case, when the client closes its connection. So if the client sends an object to the server and immediately quits, the server will read one object and get EOFExcpetion the next time it tries to read an object, on the now closed connection.

Perhaps add a QUIT-command, in which they both agree to terminate the connection?

My client should not quit unless there is a specific Bye message. The client keeps sending requests as and when the user types a command like File Get and hits the enter key. I want the connection to persist the entire time.

– Anand Sep 26 '10 at 16:52 Perhaps you could post some code? – Alexander Sagen Sep 26 '10 at 16:53 Don't see what makes the client stick around though? If it skips the not yet coded part it would just exit and terminate the connection.

– Alexander Sagen Sep 26 '10 at 17:10 Thanks a lot. I didn't realize the EOF was coming because of a closed connection. I thought it came up because it was not able to read any more objects until the client wrote any again.

A while (true) loop on the client-side worked. :) – Anand Sep 26 '10 at 17:15.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions