Moin Moin!
Hallo Alexander
Zeilenenden ist 'ne gute Idee, puts scheint nur ein CR oder(!) LF rauszuwerfen, nicht beides und nicht in der richtigen Reihenfolge.
Könntest du mir das etwas genauer erklären?
puts() schreibt den String in den Socket, und nach 10 Sekunden Google auch noch ein Zeilenendzeichen, vermutlich CR oder LF.
Sieht telnet.exe ein CR, setzt es den Cursor auf den Anfang der aktuellen Zeile. Sieht telnet.exe ein LF, setzt es den Cursor in der aktuellen Spalte eine Zeile tiefer. Sollte es zumindest.
Deinem Screenshot nach würde ich raten, das Dein Programm gar kein Zeilenendzeichen schreibt. Die Farben in Deinem Screenshot passen nicht zu dem Code, den Du gepostet hast, denn ohne explizite Steuersequenzen vom Server färbt telnet.exe die Ausgabe nicht ein.
So kann Dir hier niemand helfen.
Außerdem sieht der Code überhaupt nicht nach Telnet aus, eher nach Raw Socket. Kann Windoofs Telnet-Client zwar auch irgendwie, aber wetten würde ich darauf nicht. PuTTY benutzen, "Connection type" auf "Raw" stellen. Oder Telnet richtig implementieren.
Auch hier muss ich blöd fragen...
Folge dem Link. Telnet ist deutlich mehr als ein Raw Socket.
Also PuTTy schliesst aus, doofes GUI rumgepfusche...
Geht das auch in verständlichem Deutsch?
überhaupt liegt mein augenmerk eben darauf das es ÜBERALL geht, mehr oder weniger unabhängig von den vorrausetzungen, und telnet hat noch jeder (irgentwie...)
Nö. Telnet ist längst nicht überall verfügbar, jedenfalls nicht ab Werk. Telnet-Clients gibt es dagegen tatsächlich für sehr viele Netzwerk-fähige Betriebssysteme zum Nachrüsten.
Inwiefern ist es relevant wie ich den Telnet Socket aufbaue?
Es gibt keinen Telnet-Socket, höchstens einen Telnet-Server. Letzterer setzt auf einem TCP-Socket auf, wahlweise per IPv4 oder IPv6. Wie ein Telnet-Server zu implementieren ist, steht in der verlinkten RFC854.
Mit einem Telnet-Server kann telnet.exe zum Beispiel auch aushandeln, ob Zeichen- oder Zeilenweise übertragen wird, ob ein lokales Echo aktiv sein soll oder nicht, und so weiter. Wenn telnet.exe merkt / rät, dass die Gegenseite mit dem Telnet-Protokoll nichts anfangen kann, nimmt es einige Default-Einstellungen an, ohne zu verhandeln -- Raw Mode.
Im Telnet-Protokoll haben einige Bytes eine besondere Bedeutung, auf die Server bzw. Client reagieren müssen. Über der Telnet-Schicht liegt noch eine Terminal-Emulation, die wiederum einigen (anderen) Bytes eine besondere Bedeutung zuordnet.
Im Raw Mode werden die Bytes dagegen 1:1 übertragen, ohne besondere Bedeutung. Die Terminal-Emulation ist dagegen meistens weiterhin aktiv, wenigstens teilweise.
Das alles steht in der RFC, die ich Dir garantiert nicht vorkauen werde. Teilweise haben das Leute bereits in der deutschen und, wie fast immer detailierter, englischen Wikipedia erledigt.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".