Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi UDP Send, Stream wird verändert? (https://www.delphipraxis.net/142571-udp-send-stream-wird-veraendert.html)

xSkaschY 30. Okt 2009 13:36


UDP Send, Stream wird verändert?
 
Hallo zusammen,

versuche gerade einen UDP Server mit ein paar Daten zu füttern. Da ich keine Antwort vom Server bekomme, habe ich mal die Pakete mit Wireshark überwacht und siehe da, aus meinem Chr($FF) wird ein Chr($79).

Woran kann das liegen?

Delphi-Quellcode:
// Ein bissle Code
sCMD := Chr($FE) + Chr($FD) +  Chr($00) + Chr($04) + Chr($05)+ Chr($06)+ Chr($07)+ Chr($FF)+ Chr($FF)+ Chr($FF);

{
  oUDPClient: TIdUDPClient
  Indy 10.5.5
}

oUDPClient.ReceiveTimeout := 500;

oUDPCLient.Send(sCMD);
sBuffer := oUDPClient.ReceiveString;
WireShark meldet außerdem folgendes:

"Header checksum: 0x0000 [incorrect, should be 0x4f7b]"

So schaut des Paket beim Transfer aus:

Code:
char peer0_0[] = {0x3f, 0x79, 0x00, 0x04, 0x05, 0x06, 0x07, 0x79, 0x79, 0x79 };

LG

Bernhard Geyer 30. Okt 2009 13:43

Re: UDP Send, Stream wird verändert?
 
Zitat:

Zitat von xSkaschY
versuche gerade einen UDP Server mit ein paar Daten zu füttern. Da ich keine Antwort vom Server bekomme, habe ich mal die Pakete mit Wireshark überwacht und siehe da, aus meinem Chr($FF) wird ein Chr($79).

Unterstützt der Server überhaupt zeichen > $7F (7-Bit Ascii)?

xSkaschY 30. Okt 2009 16:09

Re: UDP Send, Stream wird verändert?
 
Er soll ja eben kein 7-Bit ASCII bekommen, sondern ein 0xFF. Aber irgendwo wird daraus was anderes.

Der Server will vorzeichenbehaftende Zeichen.

Wenn ich via PHP den Request an den Server schicke, gibt er mir auch fleißig die angeforderten Info's raus.

Also ist es damit ausgeschlossen.

LG

Klaus01 30. Okt 2009 17:34

Re: UDP Send, Stream wird verändert?
 
Guten Abend,

TidUdpClient.send() erwartet einen String.
Es könnte sein, dass das Zeichen $00 dann stört.

Hast Du schon TidUDpClient.sendBuffer(data: TidBytes) probiert?

Grüße
Klaus

xSkaschY 31. Okt 2009 07:13

Re: UDP Send, Stream wird verändert?
 
Jawohl! So Funktioniert es! :)

Delphi-Quellcode:
SetLength(aPacket, 10);
aPacket[0] := $FE;
aPacket[1] := $FD;
aPacket[2] := $00;
aPacket[3] := $04;
aPacket[4] := $05;
aPacket[5] := $06;
aPacket[6] := $07;
aPacket[7] := $FF;
aPacket[8] := $FF;
aPacket[9] := $FF;

oUDPClient.SendBuffer(sHost, wPort, aPacket);

himitsu 31. Okt 2009 07:51

Re: UDP Send, Stream wird verändert?
 
Delphi-Quellcode:
var sCMD: AnsiString;

sCMD := #$FE#$FD#$00#$04#$05#$06#$07#$FF#$FF#$FF;
IdUDPClient1.SendBuffer(TBytes(sCMD));
AnsiString (bis Delphi 2007 auch noch als String bekannt) ist sozusagen eine Erweiterung eines dynamischen Byte-Arrays (bzw. eines AnsiChar-Arrays).

Und .Send erwartet, wie schon gesagt wurde, einen String, welcher dann auch noch entsprechend der gesetzen Codierung übersetzt wird.
#$FF = ÿ
dieses gibt es wohl in der ein eingestellten Codierung nicht
und deshalb wurde da ein y (#$79) daraus. :angel:

xSkaschY 31. Okt 2009 08:33

Re: UDP Send, Stream wird verändert?
 
So scheint es, was mir nur stark wundert, in einem anderen Programm hab ich des genau so gemacht und da funktionierte es.

Delphi 2010 hab ich zur Zeit

himitsu 31. Okt 2009 08:47

Re: UDP Send, Stream wird verändert?
 
D2010 ist Unicode, daß heißt Send+String ist auch Unicode, aber der Request wird bestimmt nicht als Unicode rausgehn.

xSkaschY 31. Okt 2009 09:55

Re: UDP Send, Stream wird verändert?
 
Das erklärt natürlich alles. :)

Vielen Dank für die Info! :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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