Jutta Rosenbach: Client-Client-Push? Oder: User-IP zum Flüstern weiterverarbeiten?

Hallo,

"meinem" CGI-Chat soll es möglichst an nix fehlen, was Applett-Verwöhnte kennen. Daher grüble ich drüber nach, wie "Flüstern" machbar wäre. Wenn es also keine Kunst ist, die IP zu erfahren, müßte man sie doch auch als Link

(bzw. ein Client müßte stellvertretend für den anderen Clienten eine Script-porduzierte Seite anfordern - der andre weiß ja noch nix von seinem Glück)

verwenden können - oder bin ich da auf dem Holzweg? Der Link müßte dann wohl ein weiteres CGI-Script starten, das beim Absender und beim Empfänger ein weiteres Chatfenster öffnet.... *grübel grübel*

Über eine Antwort würde ich mich freuen,

Viele Grüße Jutta

  1. hi!

    "meinem" CGI-Chat soll es möglichst an nix fehlen, was Applett-Verwöhnte kennen. Daher
    grüble ich drüber nach, wie "Flüstern" machbar wäre.

    Leider habe ich nicht ganz verstanden, was du gemeint hast. Meine Idee wäre folgende: speichere in der Datei mit den Nachrichten die IP-Adresse für die die jeweilige Nachricht bestimmt ist. Beim Ausgabeskript überprüfst du die IP-Adresse des Aufrufers. Wenn beide übereinstimmen, wird diese Zeile der Nachrichtendatei ausgegeben, ansonsten nicht.

    bye, Frank!

    1. hi!

      "meinem" CGI-Chat soll es möglichst an nix fehlen, was Applett-Verwöhnte kennen. Daher
      grüble ich drüber nach, wie "Flüstern" machbar wäre.

      Leider habe ich nicht ganz verstanden, was du gemeint hast. Meine Idee wäre folgende: speichere in der Datei mit den Nachrichten die IP-Adresse für die die jeweilige Nachricht bestimmt ist. Beim Ausgabeskript überprüfst du die IP-Adresse des Aufrufers. Wenn beide übereinstimmen, wird diese Zeile der Nachrichtendatei ausgegeben, ansonsten nicht.

      bye, Frank!

      Hallo Frank,

      vielen Dank für Deine Antwort.
      die IP-ADRESSE zu kriegen, ist ja einfach. Aber was Vernünftiges damit zu machen, wohl nicht so einfach.
      mit http:// gehts ja nicht.
      Wie sage ich also dem Skript, wie es eine Nachricht an eine bestimmte Adresse schicken soll?

      Ich schätze, ich bin einfach mit meiner Vorstellung auf dem Holzweg und "Flüstern" ist einfach nicht machbar. Zumnindest für Niemanden, der kaum über das Stadium des Anpassens hinausgekommen ist. :-(

      Gruß
      Jutta

      1. hi!

        mit http:// gehts ja nicht.

        Natürlich nicht, dafür müsste der entsprechende User ja einen Web-Server bei sich installieren.

        Wie sage ich also dem Skript, wie es eine Nachricht an eine bestimmte Adresse schicken soll?

        Du musst das anders sehen: das Skript verschickt nicht an irgendjemanden eine Nachricht, sondern entscheidet, ob jemand der ein bestimmtest Skript aufruft, diese Nachricht erhält. Im folgenden eine kurze Erklärung, wie ich das realisieren würde.

        Du könntest die Nachrichten zb. folgendermaßen in der Datei speichern:
          VonName&AnIP&Nachricht
        wobei du für AnIP die IP-Adresse des Users einsetzt, an den die Nachricht gehen soll. Falls sie an alle adressiert ist, steht dort eben ein *. Dann sollte die Nachrichten-Datei beispielsweise so aussehen:
        === cut ===
        Hans&*&Hallo Leute!
        Fritz&*&Hallo Hans, wie geht's...
        Fritz&123.456.321.654&Ich muss dir noch was geheimes sagen...
        Hans&*&Hallo Fritz!
        ...
        === cut ===

        Dann verwendest du ein Skript, das die obige Datei anzeigt. Dieses Skript wird von jedem Benutzer im Chat immer wieder aufgerufen. Und in diesem Skript kannst du dann auch die IP-Adresse des Benutzers überprüfen, dem die Daten gerade angezeigt werden. Und nur wenn die in der obigen Datei angegebene IP-Adresse mit der des Benutzers übereinstimmt, dann wird die Nachricht ausgegeben. Beispiel:
        === cut ===
        #!/usr/bin/perl -w

        print "Content-type: text/html\n\n<html><head><title>Chat</title></head><body>\n";

        open(DATEI, "<messages.txt");
        @lines = <DATEI>;
        close(DATEI);
        for (@lines)
        {
          ($from, $to, $text) = split(/&/);
          if ($to eq "*" || $to eq $ENV{'REMOTE_ADDR'})
          {
            print "<p><b>$from</b>: $text</p>\n";
          }
        }

        print "</body></html>";
        === cut ===
        Voraussetzungen dafür, dass obiges funktioniert, sind natürlich:
        ...dass du nicht eine HTML-Datei schreibst und diese dann immer wieder anzeigst, sondern ein Skript verwendest, das die HTML-Datei aus der Datei mit den Nachrichten bei jedem Aufruf dynamisch erzeugt.
        ...dass in der aktuellen Userliste die IP-Adresse jedes Benutzers gespeichert ist.

        Ich hoffe, das war jetzt alles und ich habe nichts vergessen :-) Wenn weitere Fragen bestehen, frag ruhig...

        bye, Frank!

        1. hi Frank

          Du musst das anders sehen: das Skript verschickt nicht an irgendjemanden eine Nachricht, sondern entscheidet, ob jemand der ein bestimmtest Skript aufruft, diese Nachricht erhält. Im folgenden eine kurze Erklärung, wie ich das realisieren würde.

          Vielen Dank für Deine anschauliche und ausführliche Antwort.

          Viele Grüße
          Jutta

  2. Hallo Jutta,
    das mit der IP-Adresse ist leider keine eindeutige Sache.
    Wir haben seit ein paar Wochen gar keine eindeutige IP mehr. Unser Provider teilt sie uns neuerdings immer nur temporär zu. Größere Provider wie Telekom usw. tun dies schon lange.
    Von der IP kannst Du lediglich auf den Provider aber nicht auf den Anwender schließen.
    Natürlich besitze ich die IP während meiner ganzen Session, aber wie lange dauert die und wie lange bleibt die IP für mich reserviert???

    Ich glaube Dein Problem kannst Du nicht mittels der IP lösen.

    Roland

    1. Hallo Roland,

      Vielen Dank für Deine Antwort.

      Natürlich besitze ich die IP während meiner ganzen Session, aber wie lange dauert die und wie lange bleibt die IP für mich reserviert???

      Das ist schon klar. Aber Flüstern kannst und sollst Du ja nur mit jemandem, solange er dabei ist :-)

      Ich glaube Dein Problem kannst Du nicht mittels der IP lösen.

      Vermutlich ließe sich das also schon so lösen. :-)

      Freundliche Grüße
      Jutta