Zitat von
-TheCoke-:
Das Problem ist nun, dass beim Client nicht das ankommt was ich absende.
Der Fehler kann a.) beim Client, b.) beim Server, c.) im Netzwerk oder deren Komponenten oder bei d.) dir selbst (!) liegen.
Nur mit systematischer Fehleranalyse kommst du hier weiter.
Vor allem der Fall d.) ist sehr beliebt. Schon 1000mal gesehen, ein Programmierer ist voll überzeugt irgendetwas müsste so sein. Tage später stellt sich heraus er hat einfach Tomaten auf den Augen gehabt und etwas ganz einfaches übersehen.
Du musst dir einfach selbst misstrauen und alles in Frage stellen und
dir selbst misstrauen !!
Schritt 1: was wird Serverseitig wirklich abgeschickt?
Nur wenn du die Daten des Servers in einem String zusammenfasst, in eine Datei speichert und mit einem guten Hexeditor anschaust, kannst du
dir selbst beweisen, was der Server versendet.
Delphi-Quellcode:
string1 := #$7f#$00#$01#$02#$c2#$00#$00#$00#$00#$01#$00#$00#$08#$00#$00#$00#$00#$00#$00#$00...
string2 := #$00#$00#$02#$00#$00#$00#$00#$00#$00#$00#$02#$00#$00#$00#$00#$00#$00#$00#$00#$00...
string3 := string1 + string2;
StringToFile(string3, 'C:\server.log'); // mit Hex-Editor prüfen, was in server.log steht !!
UdpServer.Send(ABinding.PeerIP, ABinding.PeerPort,string3);
Hier noch die Hilfsfunktion StringToFile():
Delphi-Quellcode:
procedure StringToFile(const FileName: string; const Contents: AnsiString);
var
fs: TFileStream;
Len: Integer;
begin
fs := TFileStream.Create(FileName, fmCreate);
try
Len := Length(Contents);
if Len > 0 then
fs.WriteBuffer(BytesOf(Contents), Len);
finally
fs.Free;
end;
end;
Schritt 2: es gilt das Gleiche wie beim Server: du speicherst die Daten in einer Datei und schaust sie mit einem HexEditor an.
Den weltbesten Hexeditor gibt es hier:
http://www.delphipraxis.net/internal...ct.php?t=46184
PS: bei D2009 musst du den Datentyp string in
AnsiString ändern und zwar an allen Stellen, an denen du davon ausgehst, dass 1 Zeichen = 1 Byte ist.