![]() |
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:
WireShark meldet außerdem folgendes:
// 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; "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 |
Re: UDP Send, Stream wird verändert?
Zitat:
|
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 |
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 |
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); |
Re: UDP Send, Stream wird verändert?
Delphi-Quellcode:
AnsiString (bis Delphi 2007 auch noch als String bekannt) ist sozusagen eine Erweiterung eines dynamischen Byte-Arrays (bzw. eines AnsiChar-Arrays).
var sCMD: AnsiString;
sCMD := #$FE#$FD#$00#$04#$05#$06#$07#$FF#$FF#$FF; IdUDPClient1.SendBuffer(TBytes(sCMD)); 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: |
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 |
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.
|
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 22:19 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