как сделать чтоб не ждать ответа от get запроса?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Student :), 27 Aug 2009.

  1. Student :)

    Student :) Elder - Старейшина

    Joined:
    9 Feb 2007
    Messages:
    278
    Likes Received:
    18
    Reputations:
    -15
    Уважвемые коллеги! как сделать чтоб не ждать ответа от get запроса?

    Code:
    
    begin
    httpcli1.FollowRelocation:=true;
    
    httpcli1.URL:='admin:[email protected]/cgi-bin/reset.cgi';
    httpcli1.Get;
    httpcli1.free;
    end;
    
    а то идёт зависание программы (
     
    #1 Student :), 27 Aug 2009
    Last edited: 27 Aug 2009
  2. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    поток создавай для запроса. и синхронизируй с основным потоком.
     
  3. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    это не паскаль вызывать все подряд, используй обработчики событий.
     
  4. intNet

    intNet Member

    Joined:
    31 May 2009
    Messages:
    29
    Likes Received:
    14
    Reputations:
    5
    юзать winsock.
     
  5. x0man

    x0man Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    33
    Likes Received:
    13
    Reputations:
    0
    >>поток создавай для запроса. и синхронизируй с основным потоком.
    +1 за создание потока

    >>это не паскаль вызывать все подряд, используй обработчики событий.
    Чушь какаято.

    >>юзать winsock.
    Не конкретный ответ -1 =\
     
  6. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Самый наилучший вариант, - используй Winsock.

    Достаточно:
    1) Инициализировать работу с Winsock.
    2) Создать сокет.
    3) Подключится к хосту (сайту).
    4) Отправить данные.
    5) Сразу же закрыть сокет, не дожидаясь ответа.
    6) Завершить работу с Winsock.
     
  7. ][yZ

    ][yZ Member

    Joined:
    3 Mar 2009
    Messages:
    66
    Likes Received:
    46
    Reputations:
    10
    Если используешь Indy, то юзай IdHttp.Head(site)
     
  8. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Либо потоки, либо события.
     
  9. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Единственный, как мне кажется, вариант, чтобы программа не дожидалась ответа от сервера после GET-запроса, это удаление объекта, отправившего данный запрос.
    Несмотря на то, что программа не будет ждать получения ответа от сервера, а продолжит выполнение, этот ответ все равно будет отправлен сервером на твой IP-адрес, сетевые протоколы не переделать =)
    Если бы ты более конкретно описал цель всего этого, то пользы тебе было бы гораздо больше.
     
    1 person likes this.
  10. mr. ZetRikS

    mr. ZetRikS New Member

    Joined:
    17 Jul 2009
    Messages:
    45
    Likes Received:
    2
    Reputations:
    0
    Помоему, поток дополнительно создавать не актуально, если нет необходимости работать с более чем 1 запросом одновременно... А в данном случае тем более нет необходимости, так как ответ ждать не нужно, юзай WinSock (сокеты) как тебе уже и предлагали, с потоками не заморачивайся...


    Поискал: http://forum.antichat.ru/showthread.php?p=1385086


    Конкрентее помоему некуда :)
     
    #10 mr. ZetRikS, 29 Aug 2009
    Last edited: 29 Aug 2009