AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi illegale Zuwanderung von Bits
Thema durchsuchen
Ansicht
Themen-Optionen

illegale Zuwanderung von Bits

Ein Thema von Evilboyz · begonnen am 30. Jan 2003 · letzter Beitrag vom 2. Feb 2003
Antwort Antwort
Evilboyz

Registriert seit: 14. Jan 2003
78 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

illegale Zuwanderung von Bits

  Alt 30. Jan 2003, 12:25
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
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#2
  Alt 31. Jan 2003, 19: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
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Evilboyz

Registriert seit: 14. Jan 2003
78 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3
  Alt 31. Jan 2003, 19: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 ..
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#4
  Alt 31. Jan 2003, 19:51
Neue Version?
Was hast du denn verändert, damit es klappt?
bb
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Evilboyz

Registriert seit: 14. Jan 2003
78 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5
  Alt 31. Jan 2003, 19: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 ... ???
  Mit Zitat antworten Zitat
Evilboyz

Registriert seit: 14. Jan 2003
78 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6
  Alt 31. Jan 2003, 20: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 ...
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#7
  Alt 2. Feb 2003, 03: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
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  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 16:59 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