Главная страница
    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.46 MB
Время: 0.004 c
2-1294913584
Finder
2011-01-13 13:13
2011.04.10
замена OleVariant


1-1251366984
_REA
2009-08-27 13:56
2011.04.10
Пустая строка в файле ресурсов


4-1247134941
istok20
2009-07-09 14:22
2011.04.10
CreateProcessAsUser error


1-1252018584
voyager
2009-09-04 02:56
2011.04.10
Возврат значения из программы


15-1292520139
Eraser
2010-12-16 20:22
2011.04.10
RMS - удаленное администрирования





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский