Announcement

Collapse
No announcement yet.

Wie kann man alle User im Internet ausfindig machen, die...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie kann man alle User im Internet ausfindig machen, die...

    Hallo,

    ich versuche ein Programm zu schreiben, das einen Instant Messenger ähnelt, das heißt es soll alle User die derzeit das Programm benutzen und online sind anzeigen und gegebenenfalls eine Verbindung zu dem User herstellen.

    Wie weiß ich, ob ein User mit einer dynamischen IP gerade online ist?

    Tschüss Tim

  • #2
    Hallo,

    indem ein "Brückenkopf-Server" mit feststehender IP verwendet wird. Sobald ein Client startet, meldet er seine aktuelle IP (dynamisch zugewiesene IP des Providers) beim Brückenkopf-Server an, so dass dieser einen eigenen Verzeichnisdienst implementieren kann. Alle Anfragen nach einem bestimmten Benutzer gehen dann nur zu diesem Server.

    Man könnte zwar alternativ dazu den kompletten IP-Adressbereich nach einer eigenen Port-Nummer durchscannen, aber das dürfte heutzutage etwas schwerfällig sein :-

    Comment


    • #3
      Hallo Tim,<br>irgendwo in den Unterverzeichnissen Deiner Delphi-Installation gibt es ein Beispiel für ein Chat-Programm. Du könntest nach dem Prinzip verfahren.<br>Jens Schuman

      Comment


      • #4
        Hallo,

        <i><u>@Andreas:</i></u><br>
        ja, soetwas in der Art hatte ich mich auch schon gedacht, man müsste sich bei einem WebSpace-Provider anmelden und dann ständig, wenn man online geht eine Datei per FTP hochladen und die anderen User laden sich diese dann wieder herunter und sehen, wann wer wo wie online ist.

        Aber was mache ich wenn ich offline gehe? Noch schnell etwas hochladen wird schwierig und mit der Zeit zu arbeiten auch, da es verschiedene Zeitzonen geben könnten.

        Natürlich wäre es am besten, wenn man seinen eigenen Computer als "Brückenkopf-Server" verwenden könnte, aber ohne teure Standleitung ist dies wohl nur schwer zu realisieren.

        Das nächste Problem ist FTP - es dauert immer ganz schön, bevor man sich irgendwo angemeldet hat und eine Datei hoch- bzw. heruntergeladen hat - gäbe es eine Alternative?

        <i><u>@Jens:</i></u><br>
        ich wüsste nicht, das Borland solch eine Funktion eingebaut hat. Vielleicht irre ich mich - korrigiere mich falls ja.

        Tschüss..

        Comment


        • #5
          Hallo Tim,<br>so eine Funktion ist mir nicht bekannt. Die mußt Du Dir schon selber basteln. Aber das Chat-Programm ist ein guter Ausgangspunkt dafür. Bei einem Chat-Programm muß sich der Client am Server (Brückenkopf-Server) anmelden. Damit der Chatter mit den anderen Chattern in Kontakt treten kann, muß der Server die angemeldeten Client irgendwie verwalten. Bei der Anmeldung könnte der Server dem Client ein Liste der angemeldeten Clients senden. Schon hast Du die Funktionalität, die Du suchst.<br>Vor einiger Zeit habe ich mal mit den Indy-Komponenten herumgebastelt und mir ein Chat-Programm geschrieben<br>http://home.t-online.de/home/jensschumann/cltsrv/cltsrv.zip<br>Jens Schuman

          Comment


          • #6
            Hallo Tim,

            auf FTP würde ich hier nicht zurückgreifen, sondern das Ganze hochmodern als <B>WebService</b> implementieren. Auf den "Brückenkopf-Server" läuft ein SOAP-Server, der intern alle Daten in einer Datenbank ablegt. Jeder Client kann über SOAP (Simple Object Access Protocol) direkt die Login- bzw. Logout-Funktion aufrufen bzw. über eine andere Funktion direkt die IP-Adresse eines bestimmten Benutzers erfragen. Da immer nur sehr kurze Anfragen (Datenblöcke) zum Server gehen, ist das sehr schnell. Für den Einsatz von SOAP wird Delphi 5 oder 6 benötigt. In den beiden letzten Ausgaben von DER ENTWICKLER habe ich dazu Beispielprojekte vorgestellt. Solange die Clients im Internet sind, können diese sich alle 1..3 Minuten beim Server melden. Somit kann der Server automatisch erkennen, dass ein Client offline ist

            Comment


            • #7
              Hallo,<br>ich habe die Artikel im Entwickler gelesen. Mußte dann aber frustriert feststellen, dass man min. D5 CSS benötigt. <br>Jens Schuman

              Comment


              • #8
                Hallo,

                @Andreas:<br>
                was bedeutet SOAP-Server - muss nicht der Provider bzw. mein mit Standleitung versehener Computer diesen WebService bereitstellen?

                Leider habe ich keine Möglichkeit, das Heft "<i>des</i> ENTWICKLER<i>S</i>" in unserer <i>"etwas kleineren Stadt"</i> zu erwerben, kann man sich auch ein Abo direkt zusenden lassen (- diese Frage hat sich geklärt, aber wieviele Ausgaben würde man für die 45,00 DM erhalten?)

                Wäre es vielleicht in diesem Zusammenhang möglich die Beispielprojekte an meine E-Mail-Adresse zu senden oder diese hier ins Forum zu stellen?

                @Jens:<br>
                was bedeutet <i><b>CSS</b></i>Cascading Style Sheet sicher nicht?

                Tschüss Ti

                Comment


                • #9
                  Hallo,

                  mit der Enterprise-Version (alt: <i>Client/Server Suite</I>) geht alles besser und bequemer, aber technisch notwendig ist die grosse Delphi-Version nicht. Alle Aufgaben kann man auch mit der Professional-Version von Delphi 5/6 erledigen.

                  Mit dem Begriff "SOAP-Server" habe ich ein ausführbares Objekt gemeint, das auf einem Web-Server ausgeführt wird. Mit Delphi hat man 2 Möglichkeiten, um einen SOAP-Server zu schreiben:

                  1. Delphi 5 Professional/Enterprise: <br>
                  Ein eigenes COM+ Objekt implementiert die Funktion und wird auf einem Windows 2000-Server mit laufendem IIS (Internet Information Service) installiert. Mit Hilfe des <i>Microsoft SOAP Toolkits 2.0</i> generiert man die SOAP-Anbindung über den Experten automatisch (ISAPI- oder ASP-Listener). Ein beliebiger Client (Visual Basic, Delphi, C++ usw). kann auf den eigenen SOAP-Server zugreifen.

                  2. Delphi 6 Enterprise: <br>
                  Der SOAP-Server wird als <b>WebService</b> in Form einer ISAPI-DLL implementiert. In diesem Fall stellt Delphi 6 auch für den Client die automatische Anbindung zur Verfügung. Allerdings funktioniert das zur Zeit aufgrund der zahlreichen Delphi 6-Bugs nur innerhalb von Delphi (d.h. sowohl SOAP-Server als auch Client werden mit Delphi 6 geschrieben) so richtig.

                  P.S: Alle Beispielprojekte von DER ENTWICKLER können über die Webseite heruntergeladen werden

                  Comment


                  • #10
                    Hi Leute!
                    interessante diskussion! die sache mit SOAP und so weiter ist ja furchtbar aktuell (siehe .NET, usw) und "hochmodern"...
                    aber mal im ernst welcher webspace-provider (der umsonst ist, oder bist du bereit geld für dieses "messenger-experiment" an einen webspaceprovider zu bezahlen, tim?) erlaubt es uns, auf einem server, eine anwendung laufen zu lassen?? Die meisten gratis-webspace-provider gewähren bestenfalls das ausführen von cgi-scripten! und genau hier würde ich auch ansetzen. dein delphi-client verbindet sich einfach mit dem cgi-script.... db-module gibt es für perl wie sand am meer und socket-programmierung unter perl ist auch nicht die welt...also no prob...und jetzt kommt mir bitte keiner mit geschwindigkeitseinbußen wegen perl *g*

                    gruß
                    Memge

                    Comment


                    • #11
                      Hallo,<br>warum Perl. CGI's lassen sich doch prima mit Delphi schreiben. Wenn Du nicht einen Browser als Oberfläche verwenden willst, kannst Du auch THTTPRequest von Fastnet benutzen.<br>Jens Schuman

                      Comment


                      • #12
                        Hallo,

                        @Andreas:<br>
                        Was fehlt eigentlich bei der PersonalVersion von Delphi 5/6? (ist eigentlich nicht weiter "problematisch", aber wissenswert).

                        Wie schon erwähnt ist der "SOAP-Server" sehr interessant und sicherlich auch effektiv, aber wie Memger schon sagte, wohl kaum etwas für kleinere Geldbeutel.

                        Irgendwie finde ich keine Beispielprojekte von DER ENTWICKLER (unter Download?). Wo befinden sich diese?

                        @Memger:<br>
                        Sicher möchte ich nicht noch unbedingt sehr viel Geld für den Webspace ausgeben.<br>
                        Wie soll das Perl-Skript laufen? Irgendwie muss doch etwas an das Skript gesendet werden und das Skript müsste etwas zurücksenden.<br>
                        Ich es am Anfang so gedacht, dass ich eine Textdatei ("Online.txt") mit der Zeit und der IP per FTP hochlade und dann mit dem CGI-Skript die Zeilen auslesen lasse und dann dem Delphi-Clienten/server über HTTP eine Meldung ausgeben lasse. Aber da fängt es ja schon mit FTP an...

                        @Jens:
                        Welcher (kostenlose) Anbieter lässt in Delphi geschriebene CGI-Skripte auf seinem Computer laufen? Vielleicht habe ich etwas misverstanden, aber wie sollte es mit "THTTPRequest" funktionieren?

                        Tschüss..

                        Comment


                        • #13
                          Hallo Tim,
                          Delphi und CGI war vielleicht etwas vorschnell. Ist bestimmt
                          ziemlich unwahrscheinlich, einen kostenlosen Anbieter zufinden,
                          der Win-Server einsetzt und es erlaubt eine eigene EXE laufen
                          zu lassen.
                          Das mit dem THTTPRequest ist eigentlich ganz einfach. Du könnest über
                          das CGI ein Chat-Programm laufen lassen. Dieses Programm wird normalerweise
                          über den Browser d.h. über die entsprechenden HTML-Seiten, die der
                          Browser lädt gesteuert. Das HTML-Formular sendet dabei über POST ein Request
                          an dein Chat-Programm. Das Chat-Programm antwortet mit einer HTML-Seite.
                          Jetzt kannst Du aber auch dieses Request über THTTPRequest absetzen.
                          Daraufhin empfängt THTTPRequest die Antwort deines Chat-Programms.
                          Die Interpretation der Antwort liegt dann allerdings bei Dir!

                          Interessant wird THTTPRequest im Zusammenspiel mit einer ISAPI/DLL.
                          Es schreibt einem niemand vor nur HTML-konformen Text zu übertragen.
                          Zum Testen habe ich darüber mal eine <u>einfache</u> Datenbankabfrage realisiert.
                          Ich habe mir allerdings ein eigenes Protokoll ausgedacht.
                          Der Client schickt ein Request (aufgebaut wie ein Request aus einem HTML-Formular)
                          zum IIS. Der IIS leitet es weiter zur DLL. Die DLL generiert die Abfrage
                          und sendet das Ergebnis zurück. Das Ergebnis könntest Du z.B XML-konform
                          verpacken. Der Client empfängt das Ergebnis und stellt es passend dar.
                          Der interessante Punkt ist, dass man damit über jede Firewall kommt.
                          Da ja die Kommunikation über Port 80 läuft.

                          Jens Schuman

                          Comment

                          Working...
                          X