1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Как отправить сразу несколько запросов серверу через сокеты?

Тема в разделе "Web Coding", создана пользователем fatalfist, 20 апр 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. fatalfist

    fatalfist Создатель

    Регистр.:
    11 мар 2007
    Сообщения:
    40
    Симпатии:
    10
    Ситуация следующая:

    Инеткрэком отправляю запрос:

    Код:
    POST http://site.com/login HTTP/1.0
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
    Referer: http://site.com
    Accept-Language: ru
    Content-Type: application/x-www-form-urlencoded
    [B]Proxy-Connection: Keep-Alive[/B]
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
    Host: site.com
    Content-Length: 47
    Pragma: no-cache
    Cookie: PHPSESSID=2f83a67a61ef83594528c117c25a7da3
    
    username=usver&password=123456&processlogin=1
    
    Приходит ответ:

    Код:
    HTTP/1.0 302 Found
    Date: Tue, 17 Apr 2007 18:23:23 GMT
    Server: Apache
    X-Powered-By: PHP/5.2.0-8
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: private
    Pragma: no-cache
    Set-Cookie: [B]PHPSESSID=dbad9cfe26fa3aa839312951e7053c4d; path=/; domain=.site.com
    Set-Cookie: loginname=usver; path=/; domain=.site.com
    Set-Cookie: id_hash=bca49e192dce15ec725dce475e59d1a0; path=/; [/B]domain=.site.com
    [B]location: http://site.com/authloggedin[/B]
    Content-Length: 0
    nnCoection: close
    Content-Type: text/html; charset=UTF-8
    RemovedHdr: Keep-Alive
    

    Как я понимаю из ответа сервак не разрывает со мной соединение и пытается перекинуть на http://site.com/authloggedin. Правильно?

    Пытаюсь реализовать то же самое на пхп через сокеты. Цель получить кукисы:
    Код:
    Set-Cookie: PHPSESSID=dbad9cfe26fa3aa839312951e7053c4d; path=/; domain=.site.com
    Set-Cookie: loginname=usver; path=/; domain=.site.com
    Set-Cookie: id_hash=bca49e192dce15ec725dce475e59d1a0; path=/; domain=.site.com
    
    Если в запросе указать Proxy-Connection: Keep-Alive - скрипт виснет намертво. Если поставить Connection: Close, то сервак присылает куки, но только:

    Код:
    Set-Cookie: loginname=usver; path=/; domain=.site.com
    Set-Cookie: id_hash=bca49e192dce15ec725dce475e59d1a0; path=/; domain=.site.com
    
    без ID сессии.

    Насколько я понял, чтобы куки нормально установились надо как-то сделать GET запрос на http://site.com/authloggedin , не разрывая соединения..

    Внимание, вопрос:
    Как сделать этот GET запрос не разрывая соединения и не закрывая сокет? Или сокет можно все-таки закрыть?

    Попытался погуглить на эту тему, нашел только какие-то туманные рассуждения по поводу неблокирующих сокетов, но ничего конкретного (не говоря уже про примеры) там не было написано...

    Наставьте, плз, на путь истинный! :)
     
  2. General Fizz

    General Fizz Боевой Генерал :)

    Регистр.:
    11 апр 2007
    Сообщения:
    753
    Симпатии:
    396
    ЗачЭм сокеты, используй лучше курл, он удобнее, хотя есть мнение что медленнее, чем сокеты.

    Для начала надо посмотреть что посылает браузер и ответ сервера на этот запрос. Лучше всего использовать Фаерфокс+плагин Live HTTP Headers. Далее сформировать и отправить запрос и получить и обработать ответ вместе с куками и/или редиректом. Примеры в официальной документации или в инете.

    Курлом можно реализовать практически любой сетевой протокол. Есть и реализация мультипоточность (функции с префиксом curl_multi)
     
  3. the_stalker

    the_stalker Постоялец

    Регистр.:
    19 фев 2007
    Сообщения:
    116
    Симпатии:
    3
    Насчет курла где то читал, что последовательный курл быстрей чем многопоточные сокеты! Я когда использовал курл был просто в шоке от скорости с которой он работает.
     
Статус темы:
Закрыта.