Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.10;
Скачать: CL | DM;

Вниз

Как задать таймаут при определении имени хоста?   Найти похожие ветки 

 
vann   (2009-02-02 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 ©   (2009-02-02 07:57) [1]

> а мне нужно производить тысячи определений.

интересно, можно подробнее?
может в потоках определять?


 
vann   (2009-02-02 08:05) [2]

У меня тысячи адресов, для которых нужно определить хостнейм. В последний раз 37 адресов определялось 40 минут. Жесть.
А в потоках какой смысл? Не убивать же его потом ручками.


 
brother ©   (2009-02-02 08:15) [3]

> У меня тысячи адресов, для которых нужно определить хостнейм.

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

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

посмотрел что в потоке в данный момент делается, пусть он дальше отрабатывает, и очереди не будет, самые быстрые хосты уже ответили, остальные нет? ну и фиг) пусть операция завершается, но нам уже пофиг)


 
Сергей М. ©   (2009-02-02 08:16) [4]


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


Организуй таймаут самомтоятельно. с применением WSAAsyncGetHostByAddr


 
vann   (2009-02-06 09:19) [5]

Сергей М., спасибо, помогло!


 
имя   (2009-03-08 11:14) [6]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2011.04.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1294746515
student22
2011-01-11 14:48
2011.04.10
Delphi &amp; Web


2-1294726595
RUu
2011-01-11 09:16
2011.04.10
оповещение первой формы о закрытии второй


1-1251369396
ViToTiV
2009-08-27 14:36
2011.04.10
Вызов формы без деактивации текущей формы


2-1294659014
User
2011-01-10 14:30
2011.04.10
Программа вылетает, если переменная принадлежит классу.


2-1294602867
mefodiy
2011-01-09 22:54
2011.04.10
Ошибка при использовании TRxMemoryData