UDP Server sendet nicht das was er soll.
-
Hallo!
Ich hab ein kleines Problem mit meinen UDP Socket.
Ich nutze System.Net.Sockets.
soUdp.SendTo(System.Text.Encoding.ASCII.GetBytes("\x88\x02\x00\x00".ToCharArray()), remoteEP);
Das Problem ist nun, dass anstatt 0x88 0x3f beim Client ankommt.
Wenn ich nun anstatt ASCII Unicode in der Funtion benutze, stimmt zwar die 0x88 der rest wird aber mehr oder weniger gestreckt, sprich: mehr als 4 Bytes.Ich hoffe jemand weiß rat.
MFG
MikeTNT
-
Das hat nichts mit der Socket zu tuen sondern mit dem ASCII Encoding.
In ASCII ist der höchste zulässige Wert 0x80. Alle Werte darüber werden in ein "?" (0x3F) verwandelt. (ASCII ist ein 7-bit Code, kein 8 bit)
MikeTNT schrieb:
Wenn ich nun anstatt ASCII Unicode in der Funtion benutze, stimmt zwar die 0x88 der rest wird aber mehr oder weniger gestreckt, sprich: mehr als 4 Bytes.
Natürlich kommen bei Unicode mehr als 4 Bytes raus weil Unicode 2 byte pro Zeichen benutzt. (Lies mal das Tooltip vom UNicode, da steht UTF 16)
Grundsätzlich ist es nie verkehrt sich im Zweifelsfall mal zu informieren was ASCII, Unicode, UTF etc denn bedeuten.
-
Eine Lösung wäre auch nicht schlecht gewesen
Ich habe es mittlerweile so gelöst:
Encoding e = Encoding.GetEncoding("ISO-8859-1"); e.GetBytes("\x88 [...]");
MikeTNT