In & out streams einer Konsole Umleiten

Ryu1991

Erfahrenes Mitglied
Hi, ich habe folgende Situation: ich habe einen Clienten und einen Server, der Server soll die cmd.exe auf dem Rechner wo er sich befindet starten, und ich möchte sie dann vom Rechner mit dem Clienten aus Kontrolieren können, erst habe ich mit dem System-Befehl gearbeitet. Soweit ist bei mir alles gleich wie in diesem Thread: http://www.tutorials.de/forum/c-c/254145-hilfe-bei-der-umleitung-der-konsolenausgabe.html
Nun besteht bei mir aber der Unterschied, ich wirklich den cmd nutzen möchte und nicht (nur) einzelne beigelegte Programme, insofern reichen mir die Lösungen aus dem oben genannten Thread nicht, es reicht mir nicht die ausgabe einer Konsole abzufangen und zurück zu geben wenn es vorbei ist.
Ich würde gerne sowas nach dem Motto machen:
Den stdinput des Cmd's auf den Serverrechner an das cin der Clientenrechners Koppeln, und das StdOut des Serverrechners an den cout des Clienten.
Das Problen ist nur, dass ich nicht weiß, wie ich das machen soll, und das Beispiel mit den Pipes im anderen Thread hilft mir leider auch nicht wirklich.
BTW: Ich benutze CodeBlocks und den gcc.
Gruß Ryu1991:)
 
Hmm ... wird schwer ... du muss halt ne Socket-Verbindung aufbauen und dann nach möglichkeit, einfach nen streambuf auf client und server seite schreiben ... dann halt übertragen ... sollte doch klargehen ;)
 
Kein Problem, dann musst du mir nur noch sagen, wie man einen Stream überträgt, und wie man die In und out streams des CMDs auf dem Server auf die des Clienten überträgt. ;)
Ich bin auf ActiveX und WScript.Shell gestoßen, aber ich wüsste auch nicht, wie mir das jetzt helfen könnte
 
Hm es wird schwerer, wenn du die cmd.exe starten willst, und nicht einfach dein Programm in einer Konsole ausführen willst :P Wenn du se in der Konsole haben willst, einfach std::streambuf überladen und einfach den Inhalt übertragen, sobald was neues kommt. Kannst ja für cout, cin, cerr, clog usw. deinen eigenen Streambuffer festsetzen.
 
Es geht mir nicht wirklich um das CMD sondern nur darum, dass ich auf dem Server vom Clientenrechner aus browsen kann, und ich dachte halt an cmd weil das damit halt geht, wenn es auch anders geht, nur zu.
Und was ist eigentlich ein Streambuf? Ein speicher für einen Stream oder was?
 
Zuletzt bearbeitet:
Hm das Browsen wäre doch garkein Problem?! Wenns OS unabhängig sein soll, boost::filesystem und sonst einfach WinAPI oder POSIX nehmen und fertig. Also da brauchste nicht große Umwege machen.

Du weißt aber wie die (meisten) Streams in C++ aufgebaut sind? Du schreibst erst alles in einem Buffer und durch std::flush wirds dann gekickt.

So, jeder Stream hat ein Buffer, einen std::streambuff. ;)
 
Danke das mit der Boost Filesystem Library war nen guter Hinweis, damit bekomme ich es vermutlich hin :)
 
Zurück