![]() |
Kommunikation zweier Programme via Internet
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? |
Re: Kommunikation zweier Programme via Internet
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.
|
Re: Kommunikation zweier Programme via Internet
Zitat:
Zitat:
greife einfach per get auf das script zu z.B.
Delphi-Quellcode:
du müsstest natürlich ständig das script abfragen da du ja eine passive verbindung haben willst ;)
WebBrowser1.Navigate('http://www.hallo.de/chess?action=set_pos&fig=12&player=white');
aber das funktioniert |
Re: Kommunikation zweier Programme via Internet
Zitat:
|
Re: Kommunikation zweier Programme via Internet
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 |
Re: Kommunikation zweier Programme via Internet
Schonmal danke für die bisherigen Antworten :-D
Zitat:
Zitat:
Zitat:
Falls noch jemand einen anderen Vorschlag hat: Immer her damit :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz