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