AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Kommunikation zweier Programme via Internet
Thema durchsuchen
Ansicht
Themen-Optionen

Kommunikation zweier Programme via Internet

Ein Thema von Hador · begonnen am 27. Dez 2006 · letzter Beitrag vom 28. Dez 2006
Antwort Antwort
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#1

Kommunikation zweier Programme via Internet

  Alt 27. Dez 2006, 20:32
Ich habe mal wieder ein altes Projekt von mir aufgegriffen: Ein Multiplayer-Schachspiel

Für die kommunikation habe ich bisher die Klassen TServerSocket und TClientSocket benutzt.
Im lokalen Netzwerk funktioniert das auch ohne Probleme. Über das Internet funktioniert dieser Weg allerdings nicht.
Das liegt vmtl. daran, dass bei meinem Router der Port (ich hatte 12321 genutzt) nicht freigegeben ist.
Ich wollte den nutzern allerdings nicht zumuten, extra für dieses Prgm. ihre Routerkonfiguration zu ändern.
Deshalb hatte ich schon überlegt, ob ich das ganze nicht über ein PHP-Script laufen lasse, was auf jeden Fall funktionieren sollte, jedoch hätte der Server mit dem PHP-Script vmtl. einiges zu tun, auch wenn pro Zug jeweils lediglich 2 Byte übertragen werden müssen. Aber es man müsste im Prgm. ja ständig abfragen, ob der Spielpartner bereits seinen Spielzug gemacht hat, ...
Und da man andere Onlinespiele ja auch so spielen kann (ohne Konfigurationsveränderung) muss es ja irgendwie möglich sein.

Daher wollte ich mal nach eurer Meinung fragen, wie ich sowas am besten realisieren kann und evtl. auch welche Komponenten ich nutzen könnte. Ich habe sowas bisher wie gesagt immer mit TServer-/TClientSocket gemacht. Mit den Indys bin ich schon wegen derer HPPT-Komponente in Kontakt gekommen und die ICS benutze ich für meinen FTP-Server. Synapse habe ich mir noch ganicht angeschaut. Ebenso sieht es mit den in D2k6 integrieten TTCPServer/TTCPClient aus.

Was empfehlt ihr mir, was habt ihr schon für Erfahrungen gemacht, habt ihr irgendwelche Beispiele/Ansätze?
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#2

Re: Kommunikation zweier Programme via Internet

  Alt 28. Dez 2006, 09:15
Mach einen der Spieler zum HTTP Server und packe entsprechende Webservices hinein. Der Gegenspieler kann sich dann wie ein HTTP Client über den Webservice unterhalten.
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#3

Re: Kommunikation zweier Programme via Internet

  Alt 28. Dez 2006, 09:36
Zitat:
Mach einen der Spieler zum HTTP Server und packe entsprechende Webservices hinein. Der Gegenspieler kann sich dann wie ein HTTP Client über den Webservice unterhalten.
-gerade das soll doch nicht sein


Zitat:
ob ich das ganze nicht über ein PHP-Script laufen lasse
das ist schon ein guter ansatz mit dem php-script

greife einfach per get auf das script zu
z.B.
WebBrowser1.Navigate('http://www.hallo.de/chess?action=set_pos&fig=12&player=white'); du müsstest natürlich ständig das script abfragen da du ja eine passive verbindung haben willst
aber das funktioniert
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: Kommunikation zweier Programme via Internet

  Alt 28. Dez 2006, 09:45
Zitat von jokerfacehro:
Zitat:
Mach einen der Spieler zum HTTP Server und packe entsprechende Webservices hinein. Der Gegenspieler kann sich dann wie ein HTTP Client über den Webservice unterhalten.
-gerade das soll doch nicht sein
Wenn ich ihn richtig verstanden habe, ging es ihm um Möglichkeiten. Zudem habe ich keinerlei Einschränkungen in seinem Posting entdecken können.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Kommunikation zweier Programme via Internet

  Alt 28. Dez 2006, 10:24
Hallo Lars,

deine bestehende Kommunikationstechnik verlangt einen offenen Port. Der Port 80 (HTTP) ist zwar immer offen, aber ich fände es zumindest unschön, wenn dieser Port durch deine Anwendung völlig beschlagnahmt würde. Tunnels und Envelopes sind zwei Ansätze, zu denen du dich informieren könntest. Tunneling funktioniert z.B. mit Indy 9. Envelopes setzen weiter oben an, z.B. implementierst du ein eigenes Protokoll, welches in HTML verpackt werden kann. Eventuell ist hier Push-Technologie (XML-HTTP) interessanter, weil der Client dann vom Server benachrichtigt werden kann.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Kommunikation zweier Programme via Internet

  Alt 28. Dez 2006, 13:43
Schonmal danke für die bisherigen Antworten

Zitat von Heffalump:
Mach einen der Spieler zum HTTP Server und packe entsprechende Webservices hinein. Der Gegenspieler kann sich dann wie ein HTTP Client über den Webservice unterhalten.
Möglich - dennoch unschön - aber auf jeden Fall eine Möglichkeit

Zitat von jokerfacehro:
du müsstest natürlich ständig das script abfragen da du ja eine passive verbindung haben willst
aber das funktioniert
Wie ich schon sagte, sah ich das als eine Möglichkeit an, jedoch wird sich der Server, auf dem das PHP-Script liegt freuen, wenn dort plötzlich mehrmals pro Sekunde das Script aufgerufen wird. Und das Script müsste "fst" sein. Also müsste ich darauf auchten, dass dieses auch immer auf meinem Webserver liegt. Sobald es weg ist funktioniert das Prgm. nicht mehr. Daher würde ich das nur als Nötlösung nehmen.

Zitat von marabu:
Tunnels und Envelopes sind zwei Ansätze, zu denen du dich informieren könntest. Tunneling funktioniert z.B. mit Indy 9. Envelopes setzen weiter oben an, z.B. implementierst du ein eigenes Protokoll, welches in HTML verpackt werden kann. Eventuell ist hier Push-Technologie (XML-HTTP) interessanter, weil der Client dann vom Server benachrichtigt werden kann.
Danke das hört sich doch schonmal sehr gut an. Ich werde mal sehen, ob ich dazu was finde. Ansonsten wäre ich naturlich über ein kleines Beispiel erfreut

Falls noch jemand einen anderen Vorschlag hat: Immer her damit
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz