Конференция "Сети" » Как задать таймаут при определении имени хоста? [D7, WinXP]
 
  • vann (02.02.09 07:54) [0]
    я использую след. код для определения имени хоста по адресу:

    function GetHostname(const ip: string): string;
    var
     Host: PHostEnt;
     Destino: in_addr;
    begin
    result:='unknown';
    try
     Destino.S_addr := inet_addr(PAnsiChar(ip));
     if Destino.S_addr <> 0 then
       Host := GetHostbyAddr(@Destino, sizeof(in_addr), AF_INET)
     else exit;
     result:=host.h_name;
    except

    end;


    Есно, перед вызовом произвожу инициализацию:

    function InitSockets(): boolean;
    begin
    WSAStatus := WSAStartup($0101, wsadt);
    result:=WSAStatus=0;
    if not result WSACleanup();
    end;


    Но вот проблема: если имя хоста не удаётся определить, эта функция выполняется очень долго, а мне нужно производить тысячи определений. Существует ли способ установить таймаут? Например, одна секунда, а потом всё, считаем хостнейм не определенным.
  • brother © (02.02.09 07:57) [1]
    > а мне нужно производить тысячи определений.

    интересно, можно подробнее?
    может в потоках определять?
  • vann (02.02.09 08:05) [2]
    У меня тысячи адресов, для которых нужно определить хостнейм. В последний раз 37 адресов определялось 40 минут. Жесть.
    А в потоках какой смысл? Не убивать же его потом ручками.
  • brother © (02.02.09 08:15) [3]
    > У меня тысячи адресов, для которых нужно определить хостнейм.

    ну и нафига это нужно? все за раз нужно знать?

    > А в потоках какой смысл? Не убивать же его потом ручками.

    посмотрел что в потоке в данный момент делается, пусть он дальше отрабатывает, и очереди не будет, самые быстрые хосты уже ответили, остальные нет? ну и фиг) пусть операция завершается, но нам уже пофиг)
  • Сергей М. © (02.02.09 08:16) [4]

    > Существует ли способ установить таймаут?


    Организуй таймаут самомтоятельно. с применением WSAAsyncGetHostByAddr
  • vann (06.02.09 09:19) [5]
    Сергей М., спасибо, помогло!
  • имя (08.03.09 11:14) [6]
    Удалено модератором
 
Конференция "Сети" » Как задать таймаут при определении имени хоста? [D7, WinXP]
Есть новые Нет новых   [134435   +33][b:0][p:0.001]