Remote Control

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Remote Control

    Hallo,

    Ich will ein Remote Crontrol Programm was OHNE Portfreischaltung läuft entwickeln.

    Das Programm soll aus 3 Einzelprogrammen bestehen:

    - Der Server (Linux Programm) welcher alles verwaltet
    - Clientsoftware (Win32 Programm) Das die informationen (Ip-Adresse/Logfiles) an den Server schickt
    - Remotesoftware (Win32/Linux Programm) Die software soll sich über den Server auf die Clientsoftware verbinden.

    Zur Problemstellung:

    Da ich die Portfreischaltung (am Client) umgehen will muss sich ja der Client zum Server verbinden und nicht umgekehrt. Ich habe nur keine Ahnung wo ich da am besten ansetzen muss.

    Ich habe mir das so vorgestellt.

    Der User1 startet auf seinem Laptop die Client-Software nun wird eine Verbindung zum Server hergestellt.
    Der User2 startet die Remotesoftware auf seinem PC und Stellt auch eine Server-Verbindung her, wo er sich dann über die Verbindung, die der Clientaufgebaut hat einloggen kann und den PC wie VNC etc. steuern kann.

    Meine Frage ist jetzt wie geht man da am besten vor, ich stelle mir das nicht ganz einfach vor. Was benötigt man dazu, welche Programmier-Sprache eignet sich am besten dazu.

    Muss man einen eigenen X-Server bauen? oder Kann man Fertige nehmen?

    Hat wer eine Idee?

    so long

    JFoX
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Ohne Port keine Verbindung! Du brauchst um einen Clienten mit einem Server zu Verbinden bei TCP immer einen Port, denn eine TCP-Verbindung wird durch zwei Endpunkte eindeutig identifiziert. Ein Endpunkt is ein geordnetes Paar aus IP-Adresse und Port.

    Also musst du einen (oder mehrere Ports) benutzen, die sowieso meistens freigeschaltet sind, weil sie Standard für gewisse Protokolle sind. Das sind üblicherweise 80 (HTTP), 25 (SMTP), 110 (POP3) und manchmal auch 21 (FTP) und diverse SSL-Ports aber das sollte reichen. Am besten lässt du bei deinem Server-Programm die Ports frei wählen. Dann hast du 2 Clienten, den der gesteuert werden soll und den der den anderen steuert, beide müssen sich auf den Server verbinden.
    Du solltest dir ersteinmal ein Protokoll überlegen das beschreibt wie die Verbindung stattfindet, denn es muss dem Server klar sein, wer steuert und wer gesteuert wird, du brauchst eine Authentifizierung und natürlich Regeln, wie die Daten übertragen werden. Das ist schon eine Menge Arbeit!
    Dann hast du das Problem, dass du eine plattformunabhängige Remotesoftware schreiben willst die einen Computer steuert. Da du Maus, Tastatur simulieren musst und den Bildschirm caputuren (evtl. auch noch am System anmelden) bekommst du ein Problem bei fast allen plattformübergreifenden Sprachen, da das recht Betriebssystem-orientierte Dinge sind, vielleicht geht es mit Java allerdings hast du dort Geschwindigkeitsprobleme (Bildschirmfoto schießen -> komprimieren > übertragen im Sekundentakt, sowie einen Eingabestrom aus dem Netzwerk parsen sind eine Menge Rechenarbeit), also suchst du dir eine native Sprache mit der du gut umgehen kannst und baust für beide Systeme ein Gerüst mit einer einheitlichen Schnittstelle, auf das du mit deinem eigentlich Programm zugreifen kannst. So brauchst du das eigentlich Programm nur einmal schreiben und jeweils mit dem passenden Unterbau kompilieren.

    Das ist eine Menge Arbeit und wird sicher ein langes Projekt. Du solltest auf jedenfall viel Zeit bei den Überlegungen zu den theoretischen Dingen (Protokoll, Schnittstelle für die Betriebssysteme) nehmen und das schriftlich machen (am besten auch nicht allein), denn nachträgliche Änderungen an den Stellen führen meistens zu exponentiellem Anstieg der Arbeit am eigentlichen Programm. Je nach Sprachwahl wirst du viel Betriebssystemkenntnisse benötigen und in jedem Fall eine Menge Wissen über Netzwerktechniken.

    P.S. In Firmenumgebung, öffentlichen Hotspots,.. wo Ports geblockt werden ist es auch üblich den Traffic zu analysieren. Bsp. Nur HTTP auf Port 80 ist erlaubt, findiger Programmierer biegt seinen FTP-Server auf Port 80 um, um im Büro raufzukommen doch der Server erkennt sowas meistens und blockt die Verbindung trotzdem. Was du dagegen machen kannst ist dein Protokoll in ein anderes einzubauen - macht die Sache aber sicher nicht einfacher.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Ich versteh nicht so genau, warum du drei Programme verwenden möchtest.

    Zum einen ist ein Programm, welches auf Verbindungen wartet immer ein Server.

    Bei UltraVNC gibts auch so eine sog. Listen Mode.

    Da kannst du eine bestimmte exe erstellen, die du deinem User schickst, den du supporten willst, da steht eine dynamische ip (http://www.dyndns.com/)und zu dem Verbindet sich dann der Client.

    Zumindest muss dein Server:
    1. eine feste bzw dynamische ip (siehe oben haben)
    2. einen freigeschalteten Port


    Wenn du noch nicht so viel Ahnung von Programmieren mit C/C++ hast würde ich dir von dem Projekt sowieso eher abraten. Ein VNC Programm ist nichts, was man an einem Tag schreibt. Programme aus dem Sektor arbeiten u.a. sogar mit selbstgeschrieben Bildschirmtreibern, um die Ausgabe auf dem Bildschirm abzugreifen und zu verarbeiten. Vorallem, weil du ja, laut deiner Beschreibung, ein Programm haben möchtest, was unter Linux und in einer WIN32 Umgebung läuft.
  • Wenn er möchte das weder der Remote-PC noch der Steuerungs-PC offene Ports (listen/passive open) brauchen, wird er einen dritten Server benötigen. Einer muss auf den Ports lauschen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Danke SeBa, du hast das richtig erkannt. Das Verbindungen Ports brauchen ist mir klar da habe ich mich falsch ausgedrückt... *sorry* Nur mal ein kleines Beispiel:

    Remote Control mit VNC geht ausschließlich nur wenn man die eingehenden Ports definiert auf dem Router genau das will ich umgehen so meinte ich das, wie du schon sagtest über default ports wie Port 80 umbiegen und das der Client (der gesteuert werden soll) die Verbindung aufbaut und nicht der Server.

    Ich habe mir das schon mal grob durch den Kopf gehen lassen... und mir Gedanken zu einem Protokoll gemacht und den Schnittstellen :). Das ist ein Haufen Arbeit, das nicht alles über Nacht entsteht ist mir klar, nur wir du schon erwähnt hast hat es sehr große Ausmaße. Im Grunde genommen will ich quasi ein eigenes VNC machen was umgekehrt funktioniert. Wenn ich einen Rechner steuern will verbinde nicht ich mich sonder der Rechner sich mit mir über einen Server...


    Danke erstmal für den Denkanstoß

    so long

    JFoX
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.