Remote Desktop

  • Hallo

    Ich mache zurzeit ein Praktikum bei einer IT-Firma und habe die Aufgabe bekommen ein Remote-Desktop-Programm zu entwickeln. Das Problem ist ... ich kenne mich mit Web-Programmierung bestens aus, aber grad so anspruchsvolle Programme habe ich noch nie entwickelt. Es ist für mich sehr unangenehm meinen Vorgesetzten zu beichten, dass ich es nicht kann, denn zumindest probieren könnte ich es. Ausserdem könnte es meine Chancen erhöhen festangestellt zu werden.

    Batch kann ich sehr gut und mit C# hatte ich auch schon kleine Programme geschrieben (zur Übungszwecken halt). Das Programm das ich entwickeln soll braucht keine Tatütata, sondern nur das Wesentlichste. Meine Frage: Ich bin gerade auf der Stufe 0 ... WO fange ich an? Erst mal interessiert mich nur die Theorie, wie so ein Programm von "innen" aussieht und erst dann die Umsetzung.

    Da ich sehr wahrscheinlich ganz viele Informationen brauche, gehe ich nicht davon aus, dass sich jemand die Mühe macht, mich von A - Z aufzuklären. Deshalb würde ich mich sehr über Links freuen, die mich Stückweise weiterbringen. Auch Stichwörter für Suchmaschinen könnten mir weiterhelfen.

    Ausserdem würde es mich interessieren, welche Sprache für meinen Fall am ehesten geeignet wäre.
    Ich spreche: (X)HTML, CSS, JavaScript (jQuery), PHP, SQL, MSL, Batch und ein wenig C#. Ich persönlich würde C# oder Java vorschlagen aber vielleicht gibt es einfachere Sprachen?

  • Also ich würde sdagen, die ganzen Web-Sprachen fallen weg, die haben alle nicht die Macht dazu. Batch ebenso, da kansste auch gleich Assambler nehmen. Nun, C# und Java können mal auf jeden Fall eine Überwachung bieten. C# als auch Java bieten ausführliche Methoden, screenshots zu machen und mit Sockets zu arbeiten. Das ist aber nur der eine Teil.
    Der Remote-Benutzer muss den Ziel-Computer ja auch steuern können. Java wird es sicherlich nicht unterstützen, die Maus-Position zu ädern, da Java ja Crossplattform orientiert ist und Windows, Mac, Linux und Solaris einfach grundverschieden sind.
    Wie es mit C# aussieht, weiss ich icht. Wenn es aber keine expliziete Methode oder Klasse dazu gibts, sollte es schwer werden. Windows will ja nicht, dass irgendwelche Schadsoftware die Maus sperrt oder sowas, ich vermute also, dass du auch nicht in C Subroutinen finden wirst, die die Position von Mauszeigern ändern. Man müsste also... Die neue Mausposition direkt in den RAM schreiben und hier bin ich mit meim Latein am Ende, sorry.

    P.S.: Warum lassen die dich eine Remote-Desktop Anwendung entwickeln?!? Es gibt doch TeamViewer, etc.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

    Einmal editiert, zuletzt von Tobse (3. Juni 2011 um 21:45)

  • Hi,

    Also eine Remote Desktop Applikation ohne jegliche Vorkentnisse in den benötigten Bereichen (Sockets, Threading, ...) ist quasi unmöglich.
    Du musst dir im klaren sein dass du nicht nur den Client für den 'Bedien-Computer' entwickeln musst, sondern auch die Serversoftware für den Hoster (also den PC, auf den man per Remote zugreiffen soll).

    Wenn du das Ganze unter C# (resp. .NET) entwickelst solltest du dir zuerst einmal den Namespace System.Net anschauen (vorallem System.Net.Sockets & System.Net.Threading).
    Damit kannst du dann die Grundvoraussetzungn umsetzen. -> Verbindung zu einem anderen Computer, Threadbasierte Applikationen, Befehle versenden etc.

    Damit du einen flüssigen Screen von deinem Hostcomputer bekommst wirst du nicht jedesmal einen kompletten Screenshot von dem Host an den Service Computer senden können.
    Eien Möglichkeit wäre es, nur die Unterschiede von Screenshot 1 zu Screenshot 2 zu versenden. Dies wird dann die Performance erheblich verbessern.

    Bzgl. Remote Controlling kann ich dir nicht wirklich weiterhelfen.
    Ich kann dir nur schildern wie ich das ganze machen würde;
    Mittels den Sockets versendest du Datenpackete die dem Server sagen was er machen muss (Bspw. Mausverschieben).

    Dort beinhaltet das Packet die Zielposition (also wohin die Mausverschoben werden muss) & den Opcode (damit der Server weiss, dass er die Mausverschieben muss).
    Einen direkten Managed-Befehl für die Mausverschiebung gibt es unter .NET nicht - dafür musst du dann zur WinApi greiffen (http://www.pinvoke.net hilft dir dabei. ;) ).

    Und sonst einfach testen testen testn. :)

    grz