Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Зависает gethostbyaddr при запущенной аське что делать? [D5, Win95/98]


Страницы:   1 2

MegaVolt ©   (2006-03-24 14:36:00) 

Добрый день.
Столкнулся с такой проблемой:
При запущенной аське зависает gethostbyaddr в моей проге.
С чем это может быть связано? Например может ли аська менять какие либо параметры таймаутов или ещё что.
И как сделать чтобы всё работало?


Rouse_   (2006-03-28 10:22:00) [21]

Вот скорее всего на этом у тебя и виснет ибо не обьявлен lpProvider.
Код определения имени провайдера:

function TMainForm.GetProvider(const CompName: String): String;
var
 Buffer: array [0..255] of Char;
 Size: DWORD;
begin
 Size := SizeOf(Buffer);
 if WNetGetProviderName(WNNC_NET_LANMAN, @Buffer, Size) <> NO_ERROR then
   Result := 'absent'
 else
   Result := String(Buffer);
end;


MegaVolt   (2006-03-27 19:00:00) [22]

>Что такое InvertIP(ADDR);

Моя функция которая переставляет порядок следования байт

Обнаружил ещё одну особенность.
Если оставить отну  gethostbyaddr то всё пашет хорошо. Если добавить в коде ещё и подключение компа
WNetAddConnection2
WNetCancelConnection2
То начинает виснуть :(

Код такой:


var
 temp:TNetResource;

 with temp do
   begin
     dwType:= RESOURCETYPE_DISK;
     lpLocalName:= nil;
     lpRemoteName :=PChar('\\'+s);
     lpProvider:='';
   end;
 j:=WNetAddConnection2(temp,nil,nil,0);  // Подключить компутер

...

 WNetCancelConnection2(temp.lpRemoteName,0,false);



Т.е. получается что вызов этих функций как то сказывается на последующих вызовах gethostbyaddr


Rouse_   (2006-03-27 17:40:00) [23]

Что такое InvertIP(ADDR);?


MegaVolt   (2006-03-27 16:58:00) [24]

Короче виснет вот этот код


function GetHostByIP(ADDR: cardinal;OsNT:boolean):string;    // Определение имени компьютера по IP адресу
var HOST: PHostEnt;
begin
 ADDR:=InvertIP(ADDR);
 HOST:=gethostbyaddr(@ADDR,4,AF_INET);
 if HOST <> nil
   then
     begin
       SetLength(Result,Length(Host.h_name));
       if OsNT
         then Result:=Host.h_name
         else OemToChar(Host.h_name,@Result[1]);
     end
   else result:='';
end;


MegaVolt   (2006-03-27 10:45:00) [25]

>делай демо пример который у тебя стабильно виснет

Он виснет достаточно редко но при запущенной Аське на одном из 300 компов зависает.

При незапущенной нормально проходит всё что положено.

Причём есть зависимость от чего то ещё. Т.к. иногда и при аське не виснет :(

Если удастся локализовать баг выложу код.


Rouse_   (2006-03-26 00:32:00) [26]

Мдя... Я же тебе разьяснял принцип данного действия в привате. Так и не получилось? Давай - делай демо пример который у тебя стабильно виснет и кидай сюда... Будем разбираться.


MegaVolt   (2006-03-24 16:42:00) [27]

>ЭТО еще  куда ?)

Если настройки которые делает аська глобальные то моя программа автоматом их использует.


Сергей М.   (2006-03-24 16:24:00) [28]


> Я же и написал ICQ версии 2002а произведён ICQ Inc


ГДЕ в первоначальном вопросе это фигурирует ?
НИгде.

Цитирую тебя:


> При запущенной аське


Да фих тебя знает, что ты имешь ввиду при этом под выражением "заспущенная аська") ..


> при запущенной аське пользуюсь её настройками


ЭТО еще  куда ?)


MegaVolt   (2006-03-24 16:03:00) [29]

>Накой ему это надо, спрашивается ?

Например для своей работы аська допускает большие задержки ответа из сети поэтому она настраивает таймаут на то значение которое её нужно. Я же никаких таймаутов не настраиваю и поэтому при запущенной аське пользуюсь её настройками и возможно gethostbyaddr не зависает а просто ждёт очень большой таймаут.


MegaVolt   (2006-03-24 15:32:00) [30]

>Хм .. Произнести фразу "ICQ-клиент такой-то версии разработки фирмы Мирабилис" - это , видать, сложно ..

Я же и написал ICQ версии 2002а произведён ICQ Inc

>Думаю, проблема в чем-то другом
Какие есть идеи? Зависимасть чёткая и стабильная.


Сергей М.   (2006-03-24 15:17:00) [31]


> MegaVolt ©   (24.03.06 15:03) [2]


Хм .. Произнести фразу "ICQ-клиент такой-то версии разработки фирмы Мирабилис" - это , видать, сложно ..


> может ли аська менять какие либо параметры таймаутов или
> ещё что


Не думаю.
Накой ему это надо, спрашивается ?

Думаю, проблема в чем-то другом


MegaVolt   (2006-03-24 15:03:00) [32]

>Кто такая "запущенная аська" ? В лицо ?

ICQ Version 2002а
Build #3727


Сергей М.   (2006-03-24 14:59:00) [33]


> запущенной аське


Кто такая "запущенная аська" ? В лицо ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо