AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stream Fehler

Ein Thema von BenjaminHelbig · begonnen am 8. Jun 2004 · letzter Beitrag vom 9. Jun 2004
Antwort Antwort
BenjaminHelbig

Registriert seit: 23. Okt 2003
Ort: Mannheim
80 Beiträge
 
Delphi 5 Professional
 
#1

Stream Fehler

  Alt 8. Jun 2004, 12:20
Hi DP'ler,

ich habe folgendes Problem. Ich sende über die UDP Komponente einen Stream an die Clientrechner bei uns im Netz. Wenn jetzt einer dieser Clients offline ist, dann bringt mir meine Hauptapplikation den Fehler:

StreamWrite Error und schmiert ab.

Folgender Code sendet den Befehl an die Clients:

Delphi-Quellcode:
try
 begin
   NMUDP1.ReportLevel := Status_BASIC;
   NMUDP1.RemoteHost := myhost;
   NMUDP1.RemotePort := RemotePort.Value;
   Mystream := TMemoryStream.Create;
   try
     MyStream.Write(mycommand[1], length(mycommand));
     NMUDP1.SendStream(MyStream);
   finally MyStream.free;
   end;
  end;
except ShowMessage('Fehler beim Senden');
end;
Der Käse ist, das der ober try except Block anscheinend vollkommen ignoriert wird, denn wenn der Client aus ist schmiert die Software ab, anstatt die Message anzuzeigen. Ist der Client hingegen online funzt alles einwandfrei.

Habt ihr eine Idee?
--------
Es ist schon über so viele Dinge Gras gewachsen, dass ich keinem Rasen mehr traue.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Stream Fehler

  Alt 8. Jun 2004, 12:23
Hast du in der IDE beim Testen auch die Debugger Exceptions deaktiviert?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Stream Fehler

  Alt 8. Jun 2004, 12:53
Zitat von BenjaminHelbig:
... Ich sende über die UDP Komponente einen Stream an die Clientrechner bei uns im Netz.....
Hai Benjamin,

unabhängig von deiner Frage ist es nicht zu empfehlen Daten über UDP zu senden. Wenn dabei ein Packet verloren geht bekommt das der sendende Rechner nicht mit.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Stream Fehler

  Alt 8. Jun 2004, 13:54
Moin!

Ich kenne die Komponente nicht, aber ich glaube zu wissen, wo dranne es liegt: am nicht ordentlich gelesener Hilfe...

Du übergibst der Komponente eine TStream Instanz, nun ist die Komponente bestimmt mit einem Thread aufgebaut, der im Hintergrund den Inhalt des Streams sendet. Somit wird das SendStream() sofort wieder verlassen und danach im Hintergrund gesendet. Wenn er nun so fleissig am Senden ist, kommst du und gibst den MemoryStream frei, was aber irgendwie ziemlich hinterhältig ist, da der Thread daraus noch Daten zum versenden lesen wollte...

Also: Grundsätzlich ist es bei den Sockets (egal welche Komponente, ob NetMaster oder Indy) so, dass sie die Daten in einem Thread senden und wenn du denen einen Stream übergibst kann der mehrere MB gross sein und das dauert, daher dürfen die Streams nicht freigegeben werden - das macht die Komponente, wenn sie fertig ist.

- ich hoffe ihr/du fasst es nicht falsch auf - nur mal so als Erklärung...

MfG
Muetze1
  Mit Zitat antworten Zitat
BenjaminHelbig

Registriert seit: 23. Okt 2003
Ort: Mannheim
80 Beiträge
 
Delphi 5 Professional
 
#5

Re: Stream Fehler

  Alt 9. Jun 2004, 06:35
@Muetze1: Danke für den Tip, werd ich checken ob die Kompo den Stream freigibt.

@Sharki: Hast du einen Vorschlag wie man es besser macht? Warscheinlich über eine der Indy Komponenten, aber welche?

Grüßle
--------
Es ist schon über so viele Dinge Gras gewachsen, dass ich keinem Rasen mehr traue.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Stream Fehler

  Alt 9. Jun 2004, 06:57
Zitat von BenjaminHelbig:
....@Sharki: Hast du einen Vorschlag wie man es besser macht? Warscheinlich über eine der Indy Komponenten, aber welche?...
Sharki

Entscheidend ist eingentlich das Du anstelle von UDP, TCP verwendest.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


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:34 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