Оказалось (впрочем, как я и ожидал), что ларчик просто открывался. Проблемс у меня с серверным кодом, а именно класс PrintWriter при конвертации из потока OutputStream в поток Writer, использует буфер и по умолчанию не отсылает данные, пока тот полностью не забьется. Надо было всего лишь добавить в его констуктор второй параметр - true и тогда он отсылает каждую строку сразу:

Код:
PrintWriter out = new PrintWriter( new BufferedWriter(new
OutputStreamWriter(socket.getOutputStream())), true);
Цитата:
|
Сообщение от FourSide
Я не силён в Java, но мне кажется, что такой код не ждёт коннекта от клиента, а закрывается сразу после открытия. И не понятно, куда и кому отправляется этот "Hello". По крайней мере, логика сокета отличается от других языков. Я бы попробовал сделать сервер на каком-нибудь визуальном языке (Delphi, например), где установка сервера делается несколькими нажатиями и протестировать клиента.
На крайний случай, проверить живой ли сервер можно через Telnet.
|
Твое предположение неверно, т.к. функуция ServerSocket.accept() как раз таки заставляет программу остановиться и ожидать пока не произойдет коннект. Но именно размышления над твоим постом, заставили меня понять суть ошибки, за что тебе огромнейшее спасибо.
Интересно, почему здесь, на форуме, все поголовно любят писать серверную часть на Delphi? (некоторые, правда, умудряются писать на ПХП

) Я, например, на дух не переношу Паскаль и все, что с ним связано (согласись, вещь устаревшая).
Кстати, как можно видеть из моего первого поста, сначала я писал на С++Builder. Если я правильно понимаю, эта среда относится к "визуальным языкам". Самое интересное, что там работало также, как и на Яве (до сих пор не могу понять почему). Поэтому-то я долго не мог поверить, что проблемы действительно в сервере.