Checkbox schalten über das Internet - vergleichbar mit Schach online

  • Hallo,

    auf einer AutoIt-Oberfläche gibt es 2 Checkboxen (später viel mehr).

    (x) Brot

    (x) Butter

    Wird eine Checkbox angeklickt, ändert sich der Status checked <-> unchecked.

    Solange die Anwendung auf einem Computer läuft, ist das kein Problem.

    Ich suche eine Lösung, wie das ganze bei zwei Computern über eine Internetverbindung funktionieren kann.

    Die IP des entfernten Computers ist bekannt.

    A ändert den Status einer Checkbox und auf beiden Computern A und B ist der neue Status zu sehen.

    B ändert den Status einer Checkbox und auf beiden Computern A und B ist der neue Status zu sehen.

    Wie synchronisiere ich auf diese Weise die Anzeige von der Oberfläche zwei Programme über das Internet?

    Welche Beispiele kennt Ihr, die ich mir hierzu ansehen kann?

    Im Prinzip müsste das genauso funktionieren, wie zum Beispiel ein Schachprogramm über das Internet.

    Wobei wahrscheinlich in einem Schachprogramm viel zu viele Scriptzeilen stecken, um das zu verstehen.

  • Schau mal in der Hilfe die Bsp. zu TCPRec() oder auch UDPRec() an. Du brauchst in beiden Fällen Server und Client um Daten in beiden Richtungen senden und empfangen zu können.

    Vielen Dank. Ich habe ein wenig Grundlagen-Erfahrungen.

    Ich kann mit AutoIt übers Internet Dateien senden und abrufen (Router, Portfreigabe ...).

    Habe bisher kein einfaches AutoIt Online-Schach-Script oder "Schiffe versenken" gefunden.

    Bei diesen Spielen werden wechselseitig Daten übertragen und die Oberfläche aktualisiert.

    Dachte, ich könne dort etwas über die wechselseitige Aktualisierung der Daten übers Internet erfahren.

    Das einfachste Script wäre eine geteilte Oberfläche für Rechner A und B und je einem lächelnden und einem weinenden :-).

    Jeder kann auswählen, wie es ihm geht und wenn beide ein positives oder negatives :) ausgewählt haben, wird bei beiden eine entsprechende Musik abgespielt :)

    • Offizieller Beitrag

    Wenn du schon Erfahrungen hast, geht es also darum, den richtigen Weg zu finden.

    - auf beiden PC brauchst du Server und Client

    - jeweils an unterschiedlichem Port

    - definiere ein Protokoll

    z. B. könntest du nach folgendem Muster senden: '1#1056#NACHRICHT#0'

    # = Trennzeichen

    1 = beginne zu senden

    1056 = Anzahl Bytes der Sendung (gesamter String)

    NACHRICHT = die Nachricht selbst

    0 = fertig mit senden

    Der Empfänger bestätigt dann mit der empfangenen Bytezahl (worauf der Sender wartet). Wird diese Nachricht mit falschem Wert oder außerhalb eines Zeitfensters empfangen, wird erneut gesendet.

    Ich meine mich zu erinnern, dass hier im Forum ein Bsp. zur Interprozesskommunikation existiert, welches auf TCP Basis arbeitet. Such einfach mal.

  • Ich meine mich zu erinnern, dass hier im Forum ein Bsp. zur Interprozesskommunikation existiert, welches auf TCP Basis arbeitet. Such einfach mal.

    Banana_2_Day !

    Kleiner Tipp (kennst Du wahrscheinlich bereits) :

    Wenn Du bei Google autoit Interprozesskommunikation tcp site:autoit.de eingibst, dann müsste Treffer 1 oder 2 bereits das von BugFix angesprochene Beispiel sein.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    So, ich hatte jetzt mal etwas Zeit, um das Script zu testen. Es funktioniert also doch noch.

    Um Dir aber mal ein Beispiel für ein Server-/Client-Programm zu zeigen, habe ich mal eine Checkbox eingebaut.

    Wenn man die Checkbox beim Client (de-)aktiviert, wird sie auch beim Server (de-)aktiviert.

  • Wenn man die Checkbox beim Client (de-)aktiviert, wird sie auch beim Server (de-)aktiviert.

    Auf lokaler Ebene funktioniert das 1a.

    Ich habe versucht, das ganze für einen Zugriff übers Internet umzuschreiben.

    Ich habe mich hoffnungslos in Endlos-Schleifen verfangen.

    Kannst Du Dein Skript ein wenig dahingehend umschreiben, dass es geteilt ist in Client und Server?

    Ein Verbindungsaufbau soll erst dann gestartet werden, wenn auf beiden Rechnern das Programm gestartet wurde.

    Port im Router habe ich freigeschaltet.

    Global $sIPAddress = "test.ddns.net"

    If @Computername = "A" Then

    $PC = "Server"

    Else

    $PC = "Client"

    EndIf

    Ich versuche zwischenzeitlich weiterzukommen. Wenn ich erfolgreich bin, ergänze ich meinen Post.

    • Offizieller Beitrag

    Kannst Du Dein Skript ein wenig dahingehend umschreiben, dass es geteilt ist in Client und Server?

    Ok! Findest Du als Anhang.

    Die "Server.au3" musst Du erst compilieren und dann starten. Anschließend kannst Du die "Client.au3" ausführen (geht auch als Script).

    Im Clientprogramm gibt es einen Button zum connecten mit dem Server. Dort musst Du noch Deine DynDns-Adresse eintragen (IP-Adresse wird vom Programm ermittelt).

    Die DynDns-Konfiguration und die Port-Weiterleitung im Router hast Du ja bereits vorgenommen.