Форум: "Сети";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Внизgethostbyname и торможение проги Найти похожие ветки
← →
AlexeyITN (2004-01-10 11:31) [0]Доброго времени суток. Использую 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;
----------------------------------------------------------------
Заранее благодарен!
← →
FireMan_Alexey © (2004-01-10 14:55) [1]Используй 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);
Удачи
← →
AlexeyITN (2004-01-10 15:53) [2]Спасибо! И Вам Удачи!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c