[Python-de] Datenübertragung per UDP
Peter Otten
__peter__ at web.de
Do Apr 23 15:43:17 CEST 2015
Stefan wrote:
> Hallo,
>
> Wir senden mit einem Delphi-Programm von einem PC aus UDP-Pakete an ein
> Python Script auf einem Linux Server.
>
> Dabei beobachten wir folgendes Phänomen:
>
> Datenbytes < 128 werden korret übertragen. Datenbytes > 127 kommen auf
> der Empfangsseite als 0x3F, also Dezimal 63 an. Das betrifft nur die
> Datenbytes. Die IP-Adresse des Senders können wir korrekt auslesen.
>
> Auf der Delphi-Seite sieht es so aus, dass alles bis zum Aufruf der
> UDP-Senderoutine ok ist.
>
> Die Frage ist jetzt, wo liegt das Problem? Kann man per UDP
> grundsätzlich nur 7-Bit Worte senden oder liegt das Problem eventuell
> doch auf der Delphi Seite?
>
> Ich kann hier keine Codeschnipsel zeigen, weil ich das Thema nicht
> selbst bearbeite und der Kollege, der das bearbeitet schon Feierabend
> hat. Aber vieleicht kann mir ja trotzdem jemand einen Tipp geben.
>>> chr(0x3f)
'?'
ist das ASCII-Fragezeichen, und das erscheint normalerweise beim Umwandeln
von Unicode in Bytes
>>> u"Ähnlich üblich löblich".encode("ascii", "replace")
'?hnlich ?blich l?blich'
und somit auf der Sender-Seite. Eine missglückte Konversion von Bytes auf
Empfängerseite äußert sich in der Regel als
>>> "Ähnlich üblich löblich".decode("ascii", "replace")
u'\ufffd\ufffdhnlich \ufffd\ufffdblich l\ufffd\ufffdblich'
wobei
>>> unicodedata.name(u"\ufffd")
'REPLACEMENT CHARACTER'
Mehr Informationen über die Mailingliste python-de