Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > synapse TTCPBlockSocket


Автор: Mikel 2.4.2010, 15:41
Опрашиваю IP камеру по таймеру. Если смотреть по диспетчеру задач, то память занимаемая приложением растет примерно на 8кб в секунду.
Проект есть во вложении, на всякий случай код:

Код

procedure TForm1.Timer1Timer(Sender: TObject);
var
  s:string;
  n:integer;
begin
  SC.Connect('192.168.2.12','80');
  SC.SendString('GET /image?res=full&x0=400&y0=300&x1=1200&y1=900&quality=21 HTTP/1.0'#13#10'Host: 192.168.2.12'#13#10#13#10);

  mem.SetSize(0);
  SC.RecvStreamRaw(mem,2000);

                    if mem.Size>200
                       then begin
                              SetLength(s,200);
                              mem.Position:=0;
                              mem.Read(s[1],200);

                              n:=Pos(#13#10#13#10,s);

                              tmpIM.SetSize(0);

                              mem.Position:=n+3;
                              tmpIM.CopyFrom(mem,mem.Size-mem.Position);

                              tmpIM.Position:=0;

                              jpg.LoadFromStream(tmpim);
                              Image1.Picture.Assign(jpg);

                              tmpIM.Clear;
                            end;
  SC.CloseSocket;
end;


Может надо как-то чистить буферы сокета, или еще что-н?

Автор: Mikel 12.4.2010, 09:21
Ладно, оставим утечку памяти smile
Проблема еще возникает при коннекте к несуществующему хосту, синапсом вызывается куча exception 0x000006BA в try except они отлавливаются, но дебаггер по истечении некоторого времени говорит что слишком много исключительных ситуаций было в программе, но выполнение продолжить можно. При запуске не под отладчиком, приложение через некоторое время просто закрывается.

С indy такого не было, но по скорости работает ощутимо медленнее. Как бы мне с этим бороться...

Автор: Matematik 12.4.2010, 14:21
>Присоединённый файл  Synapse.zip 3,08 Kb

FastMM утечек не видит,  но кол-во используемой памяти растет.
Если не грузить картинку в Image, "утечка" пропадает - значит проблема не в synapse.

> несуществующему хосту, синапсом вызывается куча exception 0x000006BA

Такого не наблюдаю.
У меня D2007 
synapse версия 2009-10-09 - release no. 39
Какие версии у тебя?
Как точни выглядит exception?

Автор: Mikel 12.4.2010, 16:45
Тоже D2007, synapse 2009-10-08 - 39

"application-defined exception (code 0x000006ba) at 0x7c812afb"
Я бы сам его не заметил, если бы делфи не ругалась на его множественные вызовы. А вылазиет он отдельно только если прописать его дебаггере. Вылазиет вроде бы только когда хоста нет.

Автор: Mikel 13.4.2010, 08:46
И не только там... Пустой проект, на форме только сокет от ICS. Exception Вызывается при коннекте в модуле OverbyteIcsWSocket.
Функция:

Код

function WSocket_Synchronized_connect(
    s        : TSocket;
    var name : TSockAddr;
    namelen  : Integer): Integer;
begin
    if @FConnect= nil then
        @FConnect := WSocketGetProc('connect');
    Result := FConnect(s, name, namelen);//здесь exception
end;


Повторюсь, что дебаггер его отдельно не отлавливает, если только его не прописать, отлавливает только его множественные вызовы при частых коннектах.

Автор: Mikel 13.4.2010, 09:20
Прошу прощения, похоже что проблема локальная- на ноуте такого exception'a нет  smile 

Последние новости smile
Exception вызывается при любом вызове connect'a из wsock32.dll. Exception вызывает инъецированная dllка Dr.Web'a. При работе с броузером и с прочими программами, которые сравнительно редко вызывают коннект, exception никакого последствия не имеет. А процесс, который опрашивает несколько IP камер по HTTP 1.0,  по 15 раз в секунду каждую, убивается системой, ну а Delphi ругается на частый вызов exception'ов.
Такие дела...  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)