Hallo Alexander
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.
Ok dieser unterschied war mir nicht bekannt.
Danke für das, muss ich nur noch rausfinden wie ich das steuern, bzw verändern kann das er mir immer die Zeile bricht (was ja die puts funktion laut doku auch machen sollte...)
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.
Ach Gott die paar Farben xD
Klar kann mein Socket mehr als die Zeit auszugeben, und dazu ist er noch schön Bunt. Aber der restliche code ist komplett irrelevant. Auch SW und ohne die ganzen anderen sachen (also genau der gepostete code) bringt diese Probleme.
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.
Ich bin ihm Gefolgt, aber z.b. um eine Webseite zu machen muss ich auch nichts über das IP/TCP protokoll wissen, obwohl ich es nutze. Dachte das ist bei Telnet auch so.
Also PuTTy schliesst aus, doofes GUI rumgepfusche...
Geht das auch in verständlichem Deutsch?
Sorry. Ich möchte nicht das meine Anwender davon abhängig sind eine Grafische Oberfläche zu verwenden. Davon abgesehen hasse ich "Tools" für minimale Aufgaben (Chaos pur) ... Aber es kann ja nicht jeder Linux haben xD
ü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.
Ok... aber meine Anwender haben Linux, Windows und vielleicht noch Mac, dazu Android und IPhone-dingens-dinger. Und bis auf das man ab Win Vista erst mal Telnet aktivieren muss, sollte es doch überall vorhanden sein. (iPhone habe ich keine ahnung, ist mir auch egal)
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.
Das ist schon mehr als genug information, danke hierfür!
Trotzdem bin ich der Meinung das es auch "raw" funktionieren sollte.
Grüsse,
Roman