![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
gethostbyname и торможение проги [D4, Win2k]
AlexeyITN © (2004-01-10 11:31:00)Доброго времени суток. Использую gethostbyname. Когда определяемый компютор выключен наблюдаю тормоз проги, залипание. Как от этого избавится? Попробовал Application.ProcessMessages - не помогает. Похоже, что это не из той оперы...
"Потоки" что ли?(в них то я НОЛЬ)...
Если можно, то докиньте пару строчек кода...
----------------------------------------------------------------
gethostbyname('delphi.mastak.com');
error := GetLastError();
if (error <> 0) then
begin
Memo1.SetTextBuf('Error in call to'+
'gethostbyname().');
Memo1.Lines.Add('Error code: '+IntToStr(error));
Exit;
----------------------------------------------------------------
Заранее благодарен!
AlexeyITN (2004-01-10 15:53:00) [1]Спасибо! И Вам Удачи!
FireMan_Alexey (2004-01-10 14:55:00) [2]Используй WSAAsyncGetHostByName, запускаеш ее с параметрами
(FHandle,GET_HOSTMESSAGE,PChar(FHost),FGetHostData,MAXGETHOSTSTRUCT)
FGetHostData:Pointer;
1. Создаешь процедуру MyProcedure(Msg:TMyMessage), которая срабатывает на твое сообщение (например GET_HOSTMESSAGE);
2. Привязываешь Handle к твоей процедуре или если пишеш в
Form1 то просто добавляешь message GET_HOSTMESSAGE;
3. После запуска WSAAsyncGetHostByName ждешь срабатывание твоей процедуры по сообщению GET_HOSTMESSAGE получаешь
данную структуру
TMyMessage=Recordи обрабатывешь ошибки
Msg :Cardinal;
Handle :THandle;
BufLen :Word;
Error :Word;
Result :Longint;
End;
If Msg_.Error<>0 Then
Begin
ErrorCode:=Msg_.Error;
Exit;
End;
FAddr.Sin_Addr.S_Addr:=Integer(
Pointer(PHostEnt(FGetHostData).H_Addr^)^);
Если все прошло успешно, то получаешь IP адрес, иначе удаленного хоста несуществует!!!
Да перед запуском WSAAsyncGetHostByName надо сделать FGetHostData:=AllocMem(MaxGetHostStruct);
Удачи