|
0 / 0 / 2
Регистрация: 30.06.2011
Сообщений: 173
|
|||||||
Работа с Socket(ами)27.09.2006, 21:27. Показов 6241. Ответов 27
Метки нет (Все метки)
Всем добрый день!
В данный момент разбираюсь со следующей вещью - хочу используя класс Socket, подконектится к Http-серверу и скачать с него русурс. Я пока добился вот чего: есть работающий Tomcat, на котором крутится приложение TestApp. Если я запускаю нижеследующий код, то все что я хочу мне дают, короче все Ok
если я в Http-реквесте в качестве ресурса укажу не /TestApp/index.jsp, а просто /TestApp. Страница index.jsp включена в wellcome-filelist. В общем по идее должно сработать, но у меня почему то облом, - сервер возвращает следующий ответ:
0
|
|||||||
| 27.09.2006, 21:27 | |
|
Ответы с готовыми решениями:
27
Невозможно создать Socket: Socket sock = new Socket(someHostString,somePortInt); Работа с TextBox'ами Button'ами. необходим простинький пример работы c socket-ами |
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 27.09.2006, 23:04 | |
|
Все, что приходит в голову по этому поводу, так это неверные окончания строк. Спека говорит, что строки должны заканчиваться на CRLF. Так ли это в твоем случае?
Больше пока идей нету.
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 27.09.2006, 23:05 | |
|
Да, и еще, может не стоит autoflush использовать. А флашить после того, как запрос сформирован.
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 27.09.2006, 23:10 | |
|
Ха, фигня все это =)))))) Все проще =))
Тебе ж сервер говорит, какой URI надо использовать (Location). Вот и используй его =))
0
|
|
|
0 / 0 / 2
Регистрация: 30.06.2011
Сообщений: 173
|
|
| 27.09.2006, 23:10 [ТС] | |
|
собственно у меня долгое время ваще ничего не получалось, - пока где-то не нашел вот этот кусок кода, до этого я делал примерно тоже самое тока писал напрямую в outputstream, не через PrintWriter.
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 27.09.2006, 23:11 | |
|
См. Section 10.3.3 RFC 2616.
0
|
|
|
0 / 0 / 2
Регистрация: 30.06.2011
Сообщений: 173
|
|
| 27.09.2006, 23:12 [ТС] | |
|
если можно кодом ответьте?!, пжст
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|||||||||||
| 27.09.2006, 23:21 | |||||||||||
|
Нашел, говоришь. Не сам, значит, написал. Тогда позволь поругать =))
Цикл я бы переписал вот так.
0
|
|||||||||||
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 27.09.2006, 23:24 | |
|
Нет, кодом нельзя. Да и ни к чему.
Сервер и так тебе возвращает URI, на который надо идти. Он же говорит тебе, что правильный URI -- это http://localhost:8080/TestApp/. То есть ты должен сформировать новый запрос уже с этим адресом, и послать его, как и первый. Повторять, пока не получишь код ответа 2хх, где хх -- любые дые десятичные цифры.
0
|
|
|
mishgun
|
|
| 28.09.2006, 00:54 | |
|
Reshil vlezt
izpolzovat Socket v servlete - ne est good. Dlya Vashih goals vi mozhete ispolzovat HttpURLConnection. |
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 28.09.2006, 00:56 | |
|
Тоже верно
0
|
|
|
0 / 0 / 2
Регистрация: 30.06.2011
Сообщений: 173
|
|
| 28.09.2006, 18:10 [ТС] | |
|
2 mishgun, сервлет здеся не причем, я просто разбираюсь с этими сокетами, а что касается HttpUrlConnection, - мы не ищем легких путей
![]() Ессно если использовать HttpUrlConnection получая его от URL, - все прекрасно работает. Просто, еще раз повторюсь, я хочу попробывать реализовать это на более низком уровне. Ковырялся в коде этого HttpUrlConnectio, но че то пока до конца не разобрал его. Кстати тама как раз используется PrintWriter. 2 danissimo, наскока я понял схема такая, - надо сразу после получения подобного ответа(302) послать аналогичный запрос еще раз, где в параметрах указать уже тот путь который у респонса в Location?!
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 28.09.2006, 18:31 | |
|
Совершенно верно
0
|
|
|
0 / 0 / 2
Регистрация: 30.06.2011
Сообщений: 173
|
|
| 29.09.2006, 16:49 [ТС] | |
|
И все же от теории перейдя к практике получаем следующее:
1. Как я ни пытался, - явное испольщование CRLF ни к чему не привело, т.е. я подставлял *15*12 и *12*15 и 1310 и и прочие комбинации, наконец пробовал напрямую писать в outputstream, - эфект оказался нулевой. Судя по исходникам PrintWriter(а) там в качестве CRLF берется некая послед-ть байт которая берется откуда-то из пропертей... 2. а ешо я стокнулся таким вот моментом: после того как я получил первый ответ от сервера с кодом 302 и указанием нужного ресурса, - я пытюсь повторно послать запрос на сервер уже с нужным ресурсом, - таким же образом что и первый. Пытаюсь я это сделать через тот же самый сокет, - в ответ "молчание". Лечится только созданием нового объекта Socket. 3. Насколько я понял - в параметрах реквеста можно указать тип Connection, - не только close, но и Keep-alive, - в теории мне все понятно. Но вот на практике я не могу поянть почему если я в своем случае делаю connection: Keep-alive, - то происходит тоже самое что и при Connection: close, только ответ приходит не мгновенно а секунд через 5...
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 29.09.2006, 17:37 | |
|
Что может быть не так.
1. Честно говоря, не понял, что означает "ни к чему не приводило". Ты ж получаешь ответ. Просто ты запускаешь свою софтину на Windows. И к счастью конец строки в Windows и есть CRLF. Запустив на Unix, результата не получишь, так как сервер не поймет твой запрос. 2. а) Можно попробовать послать GET /TestApp/ HTTP/1.1 Host: localhost:8080 вместо GET http://localhost:8080/TestApp/ HTTP/1.1 б) Миллион людей попадают в одну и ту же яму. PrintStream/PrintWriter ничего не скажет, если он не смог записать в поток. Вероятно, в твоем случае, так как Connection: Close, выходной поток закрывается, а ты об этом и не знаешь. Как лечить? Либо не использовать PrintStream/Writer, либо спросить у него checkError(). 3. Нет идей. Могут появиться, если увижу код.
0
|
|
|
mishgun
|
|
| 29.09.2006, 21:27 | |
|
Ya ne ponyal odnogo - afftar mne tut utverzhdaet chto servletami tut i ne pahnet a u samogo v pervom poste i jsp i Httprequest i fsyo takoe. Obmanivaem da?
Ya VAn povtoryayu nehorosho ispolzovat Socket v servlet,jsp i voobsche v j2ee prilozhenii... |
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 29.09.2006, 21:39 | |
|
mishgun, не кипятись =)), похоже, чел просто учится с сетью взаимодействовать. Почему бы и не таким образом.
Аффтар, mishgun прав в том, что не стоит самому писать HTTP клиента, если нету обоснованной необходимости.
0
|
|
|
paradise
|
|||
| 15.10.2006, 04:27 | |||
Так делать не надо.
Помоему сервер тебе отвечает внятно: "То, что ты запросил - его сейчас нет. Временно... Но есть тоже самое, только со слешем на конце. Но просто так я тебе его не дам. Поэтому попроси еще раз..." На языке сервера это звучит как "302". А в сокет ты писать не можешь т.к. сервер его со своей стороны закрыл. О чем он тебе честно сообщил в ответе. Вернее писать ты как раз можешь. Только читать никто не будет. На livejournal похоже. И вообще, не занимайся ерундой. Определись, что ты хочешь изучать - сокеты или http. Иначе классических проблем не избежать. |
|||
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 18.10.2006, 20:26 | |
|
Звучит это забавно, что ресурс отсутствует временно. Он за пивом побежал и предупредил сервер, что будет через 10 минут.
. Что означает 302 - Moved Temporarily? И кто его moved ? И зачем?У нас постоянно этот код выскакивает в localhost_access_log на томкате при вызове jsp, которая в конце делает response.sendRedirect("..."); Очевидно, 302 и означает редирект. Разве можно было догадаться об этом, читая спецификацию?
0
|
|
|
paradise
|
|
| 20.10.2006, 01:23 | |
|
Теоретически, теория и практика - это одно и тоже, на практике - это совершенно разные вещи (с). Пока не попробуешь, не будешь знать наверняка.
|
|
| 20.10.2006, 01:23 | |
|
Помогаю со студенческими работами здесь
20
TreeView с checkbox`ами и DBGrid c combobox`ами Работа с Mutant'ами
Работа с comboBox-ами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|