![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
JlOKu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 30.4.2006 Репутация: нет Всего: нет |
Всем доброго времени суток, вот уже два дня никак немогу решить проблему с подключением к некоторым web-серверам например youtube.com, sibir.megafon.ru, microsoft.ru пока это список не расширялся.
Я написал программу тоннелирования, что-то вроде прокси. Получив от браузера заголовок я из него вычитываю Host: и подключаюсь с помощью сокета и отправляю полученный заголовок, и жду ответа, все сайты нормально выдают ответы, кроме выше перечисленных, на них Socket реагирует не иначе как java.net.SocketException: Connection reset to peer SocketInputStreamRead(Native methode), я бы подумал что сайты не работают, но при подключнии к ним через другой прокси все работает отлаженно.
Собственно данный класс занимается соединением к WEB-серверу (получает от удаленного клиента заголовок, вынимает из него host name, соединяется с web-сервером, получает ответ, передает ответ удаленному клиенту) За ранее спасибо Это сообщение отредактировал(а) JlOKu - 28.7.2009, 16:56 |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
ну вот и получили проблемы. Это обязательное поле в заголовке запроса http://www.w3.org/Protocols/rfc2616/rfc261...4.html#sec14.23 : A client MUST include a Host header field in all HTTP/1.1 request messages . If the requested URI does not include an Internet host name for the service being requested, then the Host header field MUST be given with an empty value. An HTTP/1.1 proxy MUST ensure that any request message it forwards does contain an appropriate Host header field that identifies the service being requested by the proxy. All Internet-based HTTP/1.1 servers MUST respond with a 400 (Bad Request) status code to any HTTP/1.1 request message which lacks a Host header field. |
|||
|
||||
JlOKu |
|
||||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 30.4.2006 Репутация: нет Всего: нет |
Извините COVD за то, что ввел вас в заблуждение, я вычитываю host, а не вырезаю. |
||||
|
|||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Как странно вы читаете заголовок. Заголовок - это текст, оканчивающийся двумя пустыми строками \r\n\r\n, т.е. байты 13 10 13 10. И данные из сокетного соединения могут приходить порциями теоретически по одному байту.
Раз это обычный прокси, то возможно проще найти готовый с открытым кодом и добавить свою функциоальность. |
|||
|
||||
JlOKu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 30.4.2006 Репутация: нет Всего: нет |
Спасибо большое COVD, как только я начал определять конец заголовка как \r\n\r\n заработала, пришлось попариться немного конечно, готовый прокси не подошел бы потому, что данную прогу надо было запускать на хостинге где большие ограничения на ресурсы (количество соз-х потоков не должно превышать 36, память не больше n)
Это сообщение отредактировал(а) JlOKu - 30.7.2009, 21:52 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |