13
InetAddress host = InetAddress.getLocalHost();
Socket link = new Socket(host, Integer.parseInt(args[0]));
System.out.println("before input stream");
ObjectInputStream in = new ObjectInputStream(link.getInputStream());
System.out.println("before output stream");
ObjectInputStream out = new ObjectOutputStream(link.getOutputStream());

"before input stream" is the last lifesign on cmd-line. There is no Exception thrown. Why is this happening? I don't understand...

args[0] is 5000. //edit: flush doesn't help.

user1054247
  • 145
  • 1
  • 2
  • 6

2 Answers2

22

This is because the ObjectInputStream(InputStream in)-constructor is a blocking-call if the inputStream is empty.

Quote:

Creates an ObjectInputStream that reads from the specified InputStream. A serialization stream header is read from the stream and verified. This constructor will block until the corresponding ObjectOutputStream has written and flushed the header.

thomas
  • 5,637
  • 2
  • 24
  • 35
  • 2
    so if i make the outputstream on the client and on the server side first, that should work? interessting.... i will give it a try. thanks. – user1054247 Nov 18 '11 at 17:27
  • well yes. if I exchange the creation of the streams it works. like written below, the `ObjectInputStream out`-thing is just a typo. thanks@all! – user1054247 Nov 18 '11 at 17:31
  • Very basic thing but very necessary to know. Thanks man you saved my days – LAMRIN TAWSRAS Jul 13 '18 at 12:43
0

Possibly,

link.getInputStream(); 

could be returning null, though that should return an error by looking at the class files. Another thing I noticed was, you declare:

ObjectInputStream out = new ObjectOutputStream(link.getOutputStream());

From this, you are stating a ObjectInputStream as a ObjectOutputStream without a cast (Would not be appropriate here anyways)

you should try:

ObjectOutputStream out = new ObjectOutputStream(link.getOutputStream());

This should work, as the script may queue the System.out, but notice the error before it can be initialized.

Tell me if this works :D

Matt
  • 95
  • 6