Конференция "Сети" » Timeout socket`ов возможно изменить ? [D7, WinXP]
 
  • МистерТ (07.03.08 08:41) [0]
    Здравствуйте.

    Работаю непосредственно с сокетами (WinSocket2.pas). При выполнении recv или send один из возможных результатов означает timeout, т.е. истекло время ожидания. Подскажите пожалуйста, как это время можно изменить, если можно вообще. Если изменить нельзя - то какая величина задана "по умолчанию" ?

    Заранее спасибо.
  • Сергей М. © (07.03.08 09:24) [1]
    см. Get/SetSockOpt(..SO_RCVTIMEO|SO_SNDTIMEO..)
  • МистерТ (07.03.08 09:51) [2]
    Огромное спасибо.
  • Сергей М. © (07.03.08 16:19) [3]

    > как это время можно изменить


    Не надо его менять.
    Такая ошибка означает аварийную ситуацию.
  • DVM © (08.03.08 22:59) [4]

    > recv или send один из возможных результатов означает timeout

    использую неблокирующие сокеты - там и сделаешь свой таймаут какой хочешь
  • SpellCaster (12.03.08 12:54) [5]
    function TMySocket.Ready: Boolean;
    var FDReadSet: TFDSet; // структура - список сокетов
       TimeVal: TTimeVal; // время, сколько ждать
    begin
    if not fActive then begin Result:=False; Exit; end; // поле fActive имеет высший приоритет
    TimeVal.tv_sec:=fTimeout div 1000;           // время в с
    TimeVal.tv_usec:=(fTimeout mod 1000)*1000;   // время в мкс
    FD_ZERO(FDReadSet);                          // обнуляем структуру
    FD_SET(fSckt,FDReadSet);                     // заносим хэндл
    select(0,@FDReadSet,nil,nil,@TimeVal);
    Result:=FD_ISSET(fSckt,FDReadSet);
    end;



    if not sock.Ready then ...

 
Конференция "Сети" » Timeout socket`ов возможно изменить ? [D7, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]