Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




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


2-1294760444
polyaev
2011-01-11 18:40
2011.04.10
Прошу помощи в задании


11-1233162811
chum
2009-01-28 20:13
2011.04.10
Установка в Delphi 10


15-1293398987
Юрий
2010-12-27 00:29
2011.04.10
С днем рождения ! 27 декабря 2010 понедельник


15-1293014298
Медвежонок ХМЛ
2010-12-22 13:38
2011.04.10
Взлетит или не взлетит?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский