ns.Read(bytesFrom, 0, 1024);
dataFromClient = Encoding.ASCII.GetString(bytesFrom);
Guten Tag 😉
bin mal ganz neu hier.... habe aber schon sehr viel Hilfestellungen hier gefunden.
Leider nichts zu meinem jetzigen "Problem".
Übertragen wird eine IP in form eines Strings. Wenn ich die IP nun mit IPAdress.Parse() oder eben TryParse versuche zu Parsen geht das nicht.
Das sollte daran liegen das der String ja 1024 "Zeichen" wegen den Buffer des Streams.
Ich kann nun den String in einer For-Schleife so formen das nur noch Zahlen und Zeichen
darin vorkommen. Aber gibt es da keine besseren Lösung ?
Ich habe versucht alle Leerzeichen im String zu entfernen aber die überflüssigen Zeichen sind leider
keine Leerzeichen aber eben auch keine Zeichen, Zahlen oder Buchstaben ....
Jemand eine Idee wie ich es ohne for-Schleife machen kann die IP aus dem String zu bekommen
oder welches "Zeichen" es ist was durch die Umwandlung der leeren bytes in den String geschrieben wird ?
Du bekommst eigentlich beim auslesen der Bytes vom Socket die tatsächliche Anzahl der empfangenen Bytes.
Entsprechend musst du den Buffer auf die Länge der Bytes die du empfangen hast kürzen.
Dann hast du die tatsächlichen Bytes im Buffer und kannst diese in den String umwandeln.
Nachtrag:
Hier in der Doku sogar ein sauberes Beispiel über den TcpClient, der dir das kürzen abnimmt.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Aber wie kann ich die bytes kürzen wenn ich nicht weiß wie viele der bytes wirklich gebraucht werden da eine IP ja nicht immer gleich groß ist. In der Doku von dir finde ich jetzt nichts was mir Hilft den String passend zu machen also ohne die unnötigen Chars .... Oder bin ich Blind ?!
Die NetworkStream.Read-Methode gibt die Anzahl der gelesenen Bytes zurück. 😉
Und die Encoding.GetString-Methode gibt es als überladene Funktion mit 3 Parametern (s.a. Beispiel dort)...
Vielen lieben Dank ihr zwei 😉
Funktioniert super jetzt ... und sieht auch schlank aus ...
Hier meine Lösung für andere 😉
Int32 Count = ns.Read(bytesFrom, 0, TCP_Transmitter.ReceiveBufferSize);
dataFromClient = Encoding.UTF8.GetString( bytesFrom , 0 , Count );
IP = IPAddress.Parse(dataFromClient);