Java sockets: программа останавливается на сокете.getInputStream () без ошибки?

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());

"перед входным потоком" является последним lifesign на cmd-line. Нет никаких исключений. Почему это происходит? Я не понимаю...

args[0] равно 5000. // edit: флеш не помогает.

2 ответов


Это так ObjectInputStream(InputStream in)-конструктор является блокирующим вызовом, если inputStream пуст.

цитата:

создает ObjectInputStream, который считывает из указанного InputStream. Заголовок потока сериализации считывается из потока и проверяется. Этот конструктор будет блок пока соответствующий ObjectOutputStream не написал и не сбросил заголовок.


, возможно,

link.getInputStream(); 

может возвращать null, хотя это должно возвращать ошибку, просматривая файлы классов. Еще я заметил, что вы заявляете:

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

из этого вы указываете ObjectInputStream как ObjectOutputStream без приведения (не было бы уместно здесь в любом случае)

вы должны попробовать:

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

Это должно работать, так как скрипт может очереди системы.out, но обратите внимание на ошибку, прежде чем она может быть инициализированный.

скажите мне, если это работает :D