TCPCLient und CR/LF -> Kein Empfang!
-
Hallo.
Ich experimentiere gerade mit C# und Netzwerk.
Ich habe ein Programm(C++), welches mir auf Aufforderung Daten über den Socket schickt.
Das funktioniert mir meinem alten C++ Programm ganz hevorragend.Mit C# habe ich noch so meine Probleme und zwar kann ich kein CR und LF empfangen, diese Zeichen sind einfach weg und durch '\0' ersetzt!
Starte ich parallell dazu mein altes Programm, bekomme ich diese Zeichen.
Eie Antwort vom Programm sieht ungefähr so aus:
START\r
Nen Haufen Zeichen, Text usw der mit \r getrennt ist\r\n
ENDE\rWobei jede Zeile ein Telegramm entspricht.
Das Problem ist hier, daß ich mit C# die Zeichen \r und \n einfach nicht empfange!
Sie sind einfach nicht da, derweil empfange ich doch das Ganze schon als byte.Hier der Quellcode:
//Connection aufbauen und abfragen TcpClient socketForApp = new TcpClient(GlobalVars.AppHost,GlobalVars.AppPort); socketForApp.SendTimeout = 1000; socketForApp.ReceiveTimeout = 10000; NetworkStream networkStream; networkStream = socketForApp.GetStream(); .......... if (networkStream.DataAvailable) { networkStream.Read(rec, 0, GlobalVars.SOCKLEN); ergebnis = System.Text.Encoding.ASCII.GetString(rec); }
usw.
Wenn ich das Ding debugge, dann sehe ich schon in der ZeilenetworkStream.Read(rec, 0, GlobalVars.SOCKLEN);
Daß in rec zwar die normalen Zeichen drinsteheln, aber KEIN *r*, an dieser Stelle steht stattdessen in \0 !!!
Ich habe schon versuche, das per Char zu empfangen->dasselbe.
Als byte-> dasselbe .
Als string -> sowieso.Was gibts noch für Möglichkeiten?
Es liegt ja definitiv nicht an der Umwandlung in den string(ergebnis = System.Text.Encoding.ASCII.GetString(rec);
)
sondern schon in der Zeile vorher.Wenns nicht als Char geht, wie dann?
Hat wer Tips?
Ich brauche diese Zeichen für die spätere Verarbeitung..
Danke und Grüße Mondmann