Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi UDP-Probleme bei Delphi2009 und Windows XP Embedded (https://www.delphipraxis.net/121358-udp-probleme-bei-delphi2009-und-windows-xp-embedded.html)

molotov13 26. Sep 2008 09:15

Re: Probleme mit Delphi2009 und Windows XP Embedded
 
Zitat:

Zitat von grenzgaenger
aber mal eine andere frage, kann es sein, dass dein XP und dein embeddedXP mit unterschiedlichen codepages laufen?

Nein, laufen beide mit Codepage 850

molotov13 26. Sep 2008 09:38

Re: Probleme mit Delphi2009 und Windows XP Embedded
 
So, habe das Problem nun ein bißchen "eingegrenzt". Nach dem Einbau einiger Debugausgaben habe ich fesgestellt dass die Applikation aus dem Funktionsaufruf

Delphi-Quellcode:
UDPC.Send(msg_temp);
nicht mehr "zurückkommt".

Hier die Eigenschaften meines TIdUDPClient:

BufferSize: 64000
IPVersion: Id_IPv4
ReceiveTimeout: 5000
...

grenzgaenger 26. Sep 2008 10:14

Re: Probleme mit Delphi2009 und Windows XP Embedded
 
Crosspost

ist dein Indy eigentlich unicode fähig? :glaskugel:

molotov13 26. Sep 2008 10:21

Re: Probleme mit Delphi2009 und Windows XP Embedded
 
Zitat:

Zitat von grenzgaenger
Crosspost

ist dein Indy eigentlich unicode fähig? :glaskugel:

Ich gehe davon aus, da das Ganze ja unter Standard XP läuft. Blöde Frage: Wie finde ich meine Indy Version heraus und wo kann ich die aktuellste Version downloaden?

molotov13 26. Sep 2008 14:35

Re: Probleme mit Delphi2009 und Windows XP Embedded
 
Habe gerade feststellen können, dass mein Server gar keine Anfrage bekommt. (Bin zuerst davon ausgegangen, dass eine "verschandelte" Anfrage gekommen ist)

edit:

http://www.delphipraxis.net/internal...093&highlight=

Habe nach Durchsicht dieses Artikels mein UDPC.Receive gegen ein UDPC.ReceiveBuffer ausgetauscht und nun kommt meine Anfrage an.

Jetzt habe ich aber ein neues Problem: Der Server schickt zwar eine Antwort weg, diese kommt jedoch bei mir nicht an, obwohl ich

Code:
aw:=UDPC.ReceiveString()
gegen

Code:
aw:TBytes;
...
UDPC.ReceiveBuffer(aw,UDPC.Buffersize);
getauscht habe. Hat jemand eine Ahnung, was mich hier noch weiterbringen könnte?

molotov13 26. Sep 2008 16:12

Re: Probleme mit Delphi2009 und Windows XP Embedded
 
In der Hilfe für die Funktion ReceiveBuffer wird als erster Parameter

Code:
Byte[]@
angegeben. Was bedeutet das @ ? Erwartet sich die Funktion einen Pointer?

edit:

Habe gerade herausgefunden, dass die Funktion ReceiveBuffer eine Exception wirft: ERangeError ("Fehler bei Bereichsprüfung")

molotov13 26. Sep 2008 16:56

Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
 
Endlich! Problem gelöst. Mit:

Code:
Buffer   : TIdBytes;
...
SetLength(Buffer, UDPC.BufferSize);
UDPC.ReceiveBuffer(Buffer);
funktionierts nun endlich. Schlussendlich bleibt nur die Frage, warum meine Ursprungsversion mit

Code:
UDPC.Send(msg_temp);
und
Code:
aw:=UDPC.ReceiveString();
mit Delphi 2007 und Delphi 2009 compiliert auf Windows XP Standard funktioniert und auf dem Embedded-System mit Delphi 2009 nicht. Aber ich bin froh, das Problem nun gelöst zu haben. Hoffentlich treten nicht neue sonderliche Phänomene auf.

Edit:

Zu früh gefreut. mit den "neuen" Funktionen SendBuffer und ReceiveBuffer, wo es zuerst auch lokal nicht funktioniert hat (XP Standard) hat es durch die oben beschriebenen Anpassungen dann einwandfrei hingehaut. Auf dem Embedded-XP-System funktioniert es aber noch immer nicht!? Schön langsam werd ich ratlos.

molotov13 26. Sep 2008 17:30

Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
 
So, ich fasse mal kurz zusammen, weil ich zugegebener Maßen jeden kleinen "Fortschritt" hier reingetippt habe:

UDP-Kommunikation mittels:

Code:
UDPC.Send
UDPC.ReceiveString
Delphi 2007 + Windows XP: OK
Delphi 2007 + Windows XP Embedded: OK
Delphi 2009 + Windows XP: OK
Delphi 2009 + Windows XP Embedded: KEINE ANFRAGE BEIM SERVER

UDP-Kommunikation mittels:

Code:
UDPC.SendBuffer
UDPC.ReceiveBuffer
Delphi 2007 + Windows XP: OK
Delphi 2007 + Windows XP Embedded: OK
Delphi 2009 + Windows XP: OK
Delphi 2009 + Windows XP Embedded: ANFRAGE BEI SERVER OK, ABER KEINE ANTWORT

Im letzten Fall wirft die Funktion UDPC.ReceiveBuffer die Exception EEncodingError ("ungültige Codeseite"). Was kann das bedeuten?

grenzgaenger 26. Sep 2008 17:35

Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
 
würde sagen, da hat dein unicodestring die falsche codepage ... :roll:

wirst wohl mal nach einer fehlerbereinigden indy gucken müssen oder schaun ob du den fehler bei den indys selbst ausbügeln kannst... :roll: :roll:

molotov13 26. Sep 2008 17:49

Re: UDP-Probleme bei Delphi2009 und Windows XP Embedded
 
Zitat:

Zitat von grenzgaenger
würde sagen, da hat dein unicodestring die falsche codepage ... :roll:

wirst wohl mal nach einer fehlerbereinigden indy gucken müssen oder schaun ob du den fehler bei den indys selbst ausbügeln kannst... :roll: :roll:

Kann es sein, dass das Problem beim Server-System (C-Code) liegt, und dort der String "falsch" geschickt wird. Hier ein Auszug davon:

Code:
int mmi_sendto(SOCKET s, const void *msg, size_t len, int flags, const struct sockaddr *to)
{
   return (sendto(s, (char*)msg, (int)len, flags, to, sizeof(sockaddr_in)));
}


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.
Seite 2 von 3     12 3      

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