Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi illegale Zuwanderung von Bits (https://www.delphipraxis.net/2593-illegale-zuwanderung-von-bits.html)

Evilboyz 30. Jan 2003 11:25


illegale Zuwanderung von Bits
 
Ich bin am verzweifeln und zweifle an meinem Verstand!
Ich schicke also auf der einen Seite einen Buffer ab und lasse mir die gesendete Datenmenge in ein Textfeld ausgeben:
Code:
gr.text := IntToStr(StrToInt(gr.text)+Socket.SendBuf(sBuffer[1],Length(sBuffer)));
dann Empfange ich den Buffer auf der anderen Seite und lasse mir die Empfangenen Daten in ein Textfeld ausgeben:
Code:
gr.text := IntToStr(StrToInt(gr.text)+Socket.ReceiveLength);
Und siehe da, die Werte stimmen absolut nicht überein!!! Die empfangene Datenmenge ist so ca. bei 20% größer, als die gesendete. Stellt sich die Frage, ob die Bits bei Ihrer Vermehrung auf dem Weg durchs Netz Spaß hatten! Aber Spaß beiseite, ich bin jetzt absolut ratlos, ich habe jetzt 4 Stunden lang den Fehler in meinem Code gesucht und die Fehlerquelle immer weiter eingegrenzt.
Hat einer eine Ahunung, was die Ursache für dieses Problem sein könnte???
meinen Code gibts nochmal ausführlicher im anderen Thread http://www.delphipraxis.net/viewtopic.php?t=2758

PS: Sorry, ich denke der Thread gehört wohl eher unter IP/LAN, habs zu spät bemerkt :oops:

Jan 31. Jan 2003 18:33

Hallo evilboyz,
dank deines Codes hab ich jetzt mittlerweile alles außer einer Sache hinbekommen.
Ich kann Dateien verschicken und alles, und die dateien sind nach dem verschicken auch noch genauso gross und funktionieren auch, allerdings kann ich den Stream, mit dem ich schicke nichtmehr freigeben, ich bekomme da jedesmal ne exception.

Dein Qtextfehler liegt hier:

Code:
  fsData := TFileStream.Create('datei\bindif.exe',fmOpenWrite);
  sBuffer := StringOfChar(#00,fsData.Size);
  try
      // Dateiinhalt als String empfangen und in Datei schreiben
      sBuffer := Socket.ReceiveText;
das ist beim Empfänger.
Undzwar hast du den Buffer auf die Größe von fsdate festgelegt, das ist falsch, der Buffer muss die grösse des socket.receivetext haben.
Ich hoffe das hilft dir weiter.
Gruß
Jan

Evilboyz 31. Jan 2003 18:45

Danke für den Tip, das mit Socket.ReceiveText habe ich, so glaube ich, auch schon ausprobiert. Ist aber auch egal, die neue Lösung funktioniert wunderbar und da noch keiner was dazu gesagt hat, nehme ich an, dass ich keine wesentlichen Dinge außer Acht gelassen habe.

Was Deine Exception betrifft, so kann ich Dir eine total korrekte Antwort geben:
SendStream gibt den Stream nach dem Senden automatisch frei, wenn Du dann versuchst, ihn nochmal freizugeben, gibts ne Exception, da er ja dann nicht mehr existiert.
Siehe dazu auch die Hilfe ....

So, dann wünsch ich Dir noch ein schönes Wochenende und viel Spaß beim coden .. :coder:

Jan 31. Jan 2003 18:51

Neue Version?
Was hast du denn verändert, damit es klappt?
bb
Jan

Evilboyz 31. Jan 2003 18:55

Ich hab doch den Stream letztendlich per ReceiveText in den Buffer geschrieben und nicht per ReceiveBuffer, das hat dann auch wunderbar funktioniert, obwohl es, jedenfalls habe ich das Gefühl, nicht ganz so die feine Art ist!
Aber ich glaube, ich habe Dir heute morgen auch den entsprechenden Code geschickt ... ???

Evilboyz 31. Jan 2003 19:00

Code:
fsData := TFileStream.Create('datei\bindif.exe',fmOpenWrite);
  sBuffer := StringOfChar(#00,fsData.Size);
  try
      // Dateiinhalt als String empfangen und in Datei schreiben
      sBuffer := Socket.ReceiveText;
Jetzt dämmert mir gerade erst, was Du eben versucht hast, mir zu sagen ... natürlich ist fsData.Size ein völliger Blödsinn an der Stelle!
Der Code funktioniert allerdings fehlerfrei, den Buffer muss ich auch erst initialisieren, aber ich glaube, ich hatte bei ReceiveLength eine Fehlermeldung ... muss das nochmal ausprobieren ...

Jan 2. Feb 2003 02:55

Hehe, ich hatte mir schon gedacht, dass du das nocht ganz verstanden hast, was ich dir geschrieben habe.
Also bei mir klappt jetzt alles einwandfrei, ich kann dateien senden und empfangen nach lust und Laune, und die Grösse ist dann korrekt und ausführen kann ich die Dateien dann auch noch, wenn also noch irgendwo ein Problem ist: einfach nur nachfragen!
Gruß
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz