С удивлением обнаружил, что выполнить GET запрос к реальному HTTP-серверу не так уж и просто. Чаще всего сервер в процессе диалога просто уходил в бесконечное ожидание. Больше всего мне помогло заполнение всех заголовков ("Host:", "User-Agent:", "Accept:", "Accept-Language:", "Accept-Encoding:") и обязательно "Connection: close". Когда заполнил все эти заголовки, то все сервера (а я пробовал несколько) стали отвечать сразу и без задержки.
Подскажите пожалуйста, почему проходит решение с url.getHost(), который возвращает "javarush.ru",а не полный исходный адрес "http://javarush.ru/social.html" ?
Пару лекций назад было про ссылки, советую перечесть.
То что он отдает возвращает это правильно так как это Домен, с этим доменом отправится он на DNS Server там получит он IP Адресс и дальше он сделает коннект.
Домену не нужно знать протокол общение по этому http не нужно.
Домену не нужно знать к какой запрос вы хотите у сервера получить, и какие аргументы.
Как написали ниже по второй задаче: "если реализовываешь двунаправленный интерфейс, то при создании потока ввода вешается блокировка в ожидании потока вывода. А его еще нет. И конструктор потока ввода висит в ожидании." Вопрос: а как именно и где конструктор ввода ищет поток вывода? Как реализован этот поиск? А если я хочу просто из файла на диске почитать объекты и мне не нужен поток вывода? Тогда поток ввода создастся? Откуда Java знает, что мой интерфейс "двунаправленный"?
если реализовываешь двунаправленный интерфейс, то при создании потока ввода вешается блокировка в ожидании потока вывода. А его еще нет. И конструктор потока ввода висит в ожидании. При этом конструктор потока вывода так и не будет запущен.
Проверил в режиме отладки.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ