Sven Rautenberg: Abfrage ob Programm am Client läuft

Beitrag lesen

Hallo Sven,

Das Prinzip kann man natürlich auch umkehren, und der Server kann den Client fragen, ob der Client bestimmte Ports offen hat (was den Client in diesem Falle als Server agieren läßt), andernfalls eine Fehlerseite ausgeben. Ich weiß nicht genau, wie Audiogalaxy funktioniert, aber irgendwie müssen die Audiofiles ja getauscht werden, und das geht nur, wenn mindestens ein Server beteiligt ist. ;)

hmmm, anders geht das nicht? Schauen ob ein Port offen ist, scheint mir keine sehr zuverlässige Methode. Schliesslich kann ja jedes Programm irgendeinen Port öffnen oder?

Nein, anders geht es im Prinzip nicht. Man kann es natürlich noch verfeinern, indem Client und Server erstmal eine Programmidentifikation austauschen, bzw. der Client (dein Server) die Serveridentifikation abfragt und dadurch weiß, mit welchem Programm er es zu tun hat.

Mein Problem liegt darin, dass der Server ja nicht weiss, um welchen Client es sich handelt. Es müsste, wenn dann so gehen, dass der Server die IP des Client nimmt, und schaut ob auf Port xyz eine Verbindung aufgebaut werden kann. Der Client müsste dann seine ID zurückliefern, dann kann der Server die personalisierte Seite zurückliefern. Ist das vom gedankengang her richtig?

Erstmal muß die Rückwärtsverbindung überhaupt möglich sein. Wie Klaus in seiner Antwort schon schrieb: NAT (Network Adress Translation), Masquerading oder auch Firewalls sind Netzwerkelemente, die meist nur Verbindungen in eine Richtung (vom surfenden Browser zum Webserver) zulassen. Eine umgekehrte Verbindung zum Testen von laufender Software ist dann unmöglich.

Software wie für Gnutella schafft es trotzdem, diese Hindernisse in beide Richtungen zu umschiffen, indem Rechner hinter solchen "Netzwällen" immer von sich aus die Verbindung aufbauen und unter Umständen von anderen gewünschte Dateien an diese versenden, anstelle sie abrufen zu lassen.

Nun, es öffnet sich ja nicht einfach so ein Port, den man "abfragen" kann. Wie läuft sowas ab? Irgendeinen Dienst muss der (Web-)Server hinter diesem Port ja ansprechen, von dem er eine Antwort erwartet. Vielleicht gibts da ein kleines Codeschnipsel/Link (Sprache ist egal). Es wär schön, wenn ich jetzt ein wohlklingendes Schlagwort hören würde: RPC, RMI, Sockets, ... ;-)

Also ganz grundsätzlich: Du mußt auf dem Browser-Client eine Software laufen haben, die sich entweder synchron zum Surfen auch bei deinem Server meldet (wie sie das schafft, ist dein Problem), oder sie öffnet einen Port und läßt sich VIELLEICHT von außen erreichen. Der Webserver erhält dann entweder die Information automatisch, oder er muß zurückkontakten.

Das alles klappt mit den üblichen Methoden, Sockets zu öffnen und Verbindungen herzustellen. Wie es konkret geht, sagt dir die entsprechende Hilfe der Programmiersprache deiner Wahl. ;)

lg regenfeld

PS: Das alles klingt schon sehr gut, aber der Groschen ist noch nicht ganz gefallen, vielleicht kannst du ja nochmal etwas genauer werden (an einem kleinen Beispiel erklärt vielleicht)?

Kleines Beispiel auch noch? Das sind aber drei Wünsche auf einmal! ;)

Mal angenommen, auf meinem Rechner läuft eine Sharing-Software, die für gewöhnlich Port 3000 benutzt. Ich surfe auf deine Seite, dein Server kennt dadurch meine IP, und er kann eine Verbindung zu meinem Port 3000 öffnen. Verschiedene Dinge können passieren:
1. Die Verbindung klappt, dein Server ist glücklich
2. Die Verbindung klappt nicht,...
  a) weil meine Firewall dich blockt, oder
  b) weil mein Masquerading-Router dich blockt, oder
  c) weil meine Software schon genug Verbindungen offen hat. :)

Alternativ könnte die Sharingsoftware mein Surfen beobachten und jeweils von sich aus die Server kontakten. Dann müßte dein Webserver lediglich einen zweiten Port offen haben, auf dem sich die Software meldet, die Information (doppelter Kontakt mit Browser und Sharer) verarbeiten und glücklich sein. Mir mißfällt aber die Tatsache, daß da ein Programm meine Tätigkeit überwacht, also würde ich sowas nicht installieren (und es würde auch bei meiner Personal Firewall auffallen, daß nicht nur der Browser Kontakt sucht).

Letzendlich ist das alles eine unsichere Sache, und nicht verläßlich. Das einzige, auf das du dich verlassen kannst, ist: Wenn ein Browser kommt und Daten will, kannst du ihm welche senden, und diese kommen an. Alles andere ist Glück.

- Sven Rautenberg