Entschuldigung, habe eben auch festgestellt, dass der Hilferuf
ziemlicher Murks war. Ich machs besser:
Ich will von meinem C#-Client irgendwelche Bytefolgen an einen Server
schicken. Die Länge der Daten ist vorerst egal, ebenso ihr Inhalt.
Nun habe ich eben beobachtet, dass es beim Senden der Daten prinzipiell
keine Probleme gibt, außer beim 0x80 (evtl. noch bei anderen, bin noch
nicht alle 255 Möglichkeiten durchgegangen). Werte wie 0x49 oder 0xFF
lassen sich dagegen problemlos übertragen.
Dass zwischen 0x80 und 0x3F ein gewisser Zusammenhang besteht fiel mir
auch auf, der Dreher wird ja auch sicher nicht ohne Grund geschehen.
Ich hatte so ein Ähnliches Problem mal beim Übertragen von Daten über
die serielle Schnittstelle. Damals habe ich mit:
SerialPort.System.Text.Encoding.GetEncoding(28591);
die Coderierung umgestellt. Allerdings scheint es diese Möglichkeit beim
TCP/IP socket nicht zu geben.
Codes:
1. Initialisierung des Client-Socket
1 | IPHostEntry hostInfo = Dns.GetHostByName(Address);
|
2 | //System.Net.IPEndPoint ep = new System.Net.IPEndPoint(IPAddress.Parse(Address),port);
|
3 | System.Net.IPEndPoint ep = new System.Net.IPEndPoint(hostInfo.AddressList[0],port);
|
4 | socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
|
5 | socket.Connect(ep);
|
2. Senden von Daten
1 | string text = "\x49" + "\x80" + "\xff" + "\xff";
|
2 |
|
3 | client.send(System.Text.Encoding.Default.GetBytes(text));
|
4 |
|
5 | //...
|
6 |
|
7 | return socket.Send(data);
|
Mit System.Text.Encoding.Default.GetBytes(text)) kann ich den string
zwar Codieren, die zur Verfügung stehenden Codierungsmöglichkeiten lösen
aber nicht mein Problem, das der best case aller Codierungen noch eben
der mit dem 0x80->0x3F Problem darstellt.