AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Empfangener Buffer größer als gesendeter Buffer
Thema durchsuchen
Ansicht
Themen-Optionen

Empfangener Buffer größer als gesendeter Buffer

Offene Frage von "Necz"
Ein Thema von Necz · begonnen am 17. Jun 2010 · letzter Beitrag vom 18. Jun 2010
Antwort Antwort
Necz

Registriert seit: 22. Mai 2008
14 Beiträge
 
#1

Empfangener Buffer größer als gesendeter Buffer

  Alt 17. Jun 2010, 00:24
Delphi-Version: 2009
Nabend zusammen,

ich bin gerade dabei einen Taktikplaner für ein Spiel zu programmieren, soweit klappt alles gut.
Bin heute auf ein Problem gestoßen, das ich mir nicht erklären kann:
Ich sende per
Code:
Socket.SendString
eine Bitmap, die ich zuvor in einen StringStream geladen hab, an den Client.
Anfang und Ende des Strings sind durch eine kleine Protokollstruktur kenntlich gemacht, sodass der Client sie verarbeiten kann.
Die Bitmap ist beim Sendevorgang im String 787520 Byte groß, ich empfange jedoch am Client einen String der 792825 Byte groß ist, wodurch ich einen waagrechten Strich in der empfangenen Bitmap habe und diese ungefähr 10 Pixel nach oben verschoben ist.

Ich kann mir nicht erklären wodurch der String größer wird und weshalb die Bitmap nur nach oben verschoben und mit einem Strich versehen wird, anstatt defekt zu sein.
Hoffe mir kann jemand behilflich sein

Danke im voraus! Gruß Necz

Geändert von Necz (17. Jun 2010 um 00:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Empfangener Buffer größer als gesendeter Buffer

  Alt 17. Jun 2010, 07:01
Versuch mal einen TMemoryStream
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

AW: Empfangener Buffer größer als gesendeter Buffer

  Alt 17. Jun 2010, 07:43
Hat in Delphi 2009 der TStringStream auch eine Portierung nach Unicode erfahren? - Dann kann es sein, dass du in deinem Bitmap den Unicode-BOM siehst. Entweder du wechselst den Stream-Typ oder lässt mal die ersten 5 Zeichen aus und schaust, was dann passiert.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Necz

Registriert seit: 22. Mai 2008
14 Beiträge
 
#4

AW: Empfangener Buffer größer als gesendeter Buffer

  Alt 17. Jun 2010, 10:16
Vielen Dank für die Vorschläge,
aber ich hab sowohl den Stream ausgewechselt (TMemoryStream) , als auch einzelene Zeichen ausgelassen, nichts hat zum Erfolg geführt.

Der MemoryStream, den ich empfange ist immer noch ungefähr 8000 Byte größer als der gesendete MemoryStream.
Das heisst ja, dass es nicht am Stream-Typ liegt, sondern an der Übermittlung. Es müssen während dem Senden Dateipakete mitübertragen werden, die nicht zum Stream gehören.
Mir fällt kein Grund ein, wie es dazu kommen kann. Ich versuche jetzt mal die beiden Streams in eine Datei zu schreiben und zu vergleichen, vllt erkenne ich dann ja markante Stellen, die verändert sind.

Geändert von Necz (17. Jun 2010 um 10:20 Uhr)
  Mit Zitat antworten Zitat
Necz

Registriert seit: 22. Mai 2008
14 Beiträge
 
#5

AW: Empfangener Buffer größer als gesendeter Buffer

  Alt 17. Jun 2010, 19:47
So habe jetzt die beiden Bitmpas in eine Datei speichern lassen, die hier als Anhang enthalten sind.Hab sie gezippt, um die Bilder nicht sklaieren zu müssen. Wie deutlich zu erkennen sind, sind es 2 verschiedene Bilder.
Das komische daran:
Laut MX HexEditor sind die Dateien aber vollkommen identisch. Mir baut sich ein großes Fragenzeichen im Kopf auf, wie sowas möglich ist.

Bin für jede Hilfe offen!
Angehängte Dateien
Dateityp: rar Bilder.rar (393,3 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Empfangener Buffer größer als gesendeter Buffer

  Alt 17. Jun 2010, 20:05
Identisch ist anders
Code:
MD5 Hash of "empfangen.bmp": 612413e1447c0569c6142f21558efd97
MD5 Hash of "gesendet.bmp": 910fb2dd074891b359867d5da1b711a8
WinMerge findet Unterschiede am Anfang (eingeschobener Datenblock) und Ende (fehlende Daten).
Beide Dateien sind allerdings gleich gross.
Manuel

Geändert von H4ndy (17. Jun 2010 um 20:07 Uhr)
  Mit Zitat antworten Zitat
Necz

Registriert seit: 22. Mai 2008
14 Beiträge
 
#7

AW: Empfangener Buffer größer als gesendeter Buffer

  Alt 17. Jun 2010, 20:27
Danke für den Hinweis.
Hm okay, dann muss ich die Ursache dafür finden, dass am Anfang Daten eingeschoben werden, die dazu führen, dass am Ende welche fehlen.
  Mit Zitat antworten Zitat
Necz

Registriert seit: 22. Mai 2008
14 Beiträge
 
#8

AW: Empfangener Buffer größer als gesendeter Buffer

  Alt 18. Jun 2010, 19:23
Lösung endlich gefunden.
Es lag an einem anderen Programm, das auf irgendeine Weise zum Server connected hat und scheinbar den String manipuliert hat.
Die Datei hieß thage.exe, ich hab im Taskmanager bissl rum geschaut und konnt mir weder die Herkunft noch den Nutzen dieser Datei erkennen, daher hab ich sie gelöscht. Danach funktionierte auch die Bildübertragung.

/closed

Danke für alle Hilfestellungen und Tips
  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 19: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