AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Speicherproblem bei Sniffer

Speicherproblem bei Sniffer

Ein Thema von Surrounder · begonnen am 3. Jul 2006 · letzter Beitrag vom 3. Jul 2006
Antwort Antwort
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#1

Speicherproblem bei Sniffer

  Alt 3. Jul 2006, 13:50
Hallo Forum,

ich hab eine Anwendung die mit einer Hardware über Ethernet kommuniziert. Das sind ca. 50 Telegramme pro Sekunde. Da ich darin ein spezielles Protokoll verwenden muss und es mir mühe macht Fehler zu suchen habe ich mir einen Sniffer geschrieben, der die Daten in den Ethernetpacketen aufschlüsselt und mir als Kurven in einem TChart als Kurven darstellt.

Jetzt hatte ich das so gemacht, dass ich ein Event bekomme jedesmal wenn ein Packet kommt ( das Event ist von der Snoop komponente die das mitsniffern erlaubt ). Die Daten dann in ein array kopiert und selbst einen PostMessage ausgelöst um die Daten dann in einer anderen Routine zu verarbeiten und zu zeichnen. Problem ist jetzt dass ich zu langsam bin im zeichnen der Daten. Ich brauche zu lange und die Events stapeln sich so dass ich irgend wann einen EStackOverflow bekomme. Besonders wenn Windows entscheidet im Hintergrund irgend was anderes zu tun.

Jetzt bin ich heute schon den ganzen Tag am suchen und testen um die Daten z.B in eine kbMemTable zu schreiben, und abgeoppelt vom Empfangen diese dann zu verarbeiten. Aber das ist immer noch zu langsam.

Hat jemand eine Idee wie man so etwas hinbekomme kann? Mich würde auch interessieren, wenn ich jetzt was anderes verwende z.B. eine StringList liegt die dann im Speicher und lässt den Stack in Ruhe?

Stack vergößern will ich eigentlich nicht, denn das verzögert das Problem nur. Am Prinzip der Kommunikation kann ich auch nix ändern.

Danke für jeden Vorschlag
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Speicherproblem bei Sniffer

  Alt 3. Jul 2006, 15:06
Musst du die Daten in Echtzeit visualisieren ?
Wenn nicht, dann Speichere sie zwischen und zeige sie erst am Ende deiner Session an (Chart füllen).
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Speicherproblem bei Sniffer

  Alt 3. Jul 2006, 15:46
wenn möglich wäre mir nachezu Echtzeit am liebsten, denn ich muss damit Fehler an einer Anlage suchen, und dann sollte ich eventuell das Ding auch mal eine Stunden oder länger mitlaufen lassen.

Ich habs momentan jetzt mit einer Queue von den Systools gemacht. Damit klappt es schon ziemlich gut, denn ich kann dann auch den Speicher gleich wieder frei geben nachdem ich gezeichnet habe. Ich hab auch den TChart noch optimiert so wie es in der TChart hilfe stand. Aber toll ist es immer noch nicht.

Bin immer noch offen für Ideen.

Vor allem die Entkopplung zwischen Event Empfangen und zeichnen ist denke ich noch das Problem. Ich hab eben einen Timer der alle 10ms zuschlägt und die angekommenen Daten aus der Queue holt und zeichnet. Das hat mit dem PostMessage schon weniger Performance gekostet und war nicht so ruckelig.
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz