• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Schneller Datenausstausch von Computern über das Internet

flowmow

New member
Hallo,

meine Frage lautet:
Wie kann bekomme ich es hin, dass man schnell Daten zwischen mehreren Computern austauschen will.
Man kennt das ganze ja z.B. aus Browserspielen wie Egoshooter. Dort müssen áuch Daten schnell gesendet werden, so dass es möglich ist den Gegenspieler laufen zu sehen.
Ich bin ein anfänger und mir ist es wirklich nicht klar wie sowas funktionieren könnte. Man kann diesen schnellen Datentransfer doch nicht über den Server laufen lassen. Das wäre doch viel zu langsam. Wie funktioniert sowas?

Gruß
Flowmow
 
Man kann diesen schnellen Datentransfer doch nicht über den Server laufen lassen. Das wäre doch viel zu langsam.
Wie kommst Du darauf? Und was verstehst Du unter langsam? Ist Counterstrike langsam? Oder World of Warcraft? Oder IRC? Oder ICQ?


Wie funktioniert sowas?
Die Kommunikation läuft entweder über eine Standleitung (TCP) oder verbindungslos(UDP). In beiden Fällen werden Daten mit einem entsprechenden Server ausgetauscht. Dies kann ein dedizierter Server sein, es kann aber auch sein, dass der Server in der Clientanwendung eingebaut ist. Bei Netzwerk-Spielen muss einer das Spiel "aufmachen", damit sich die anderen einklinken können.
Es gibt auch den Fall, dass ein zentraler Server die Spieler nur zusammenbringt, die eigentlichen Spiele dann aber entkoppelt zwischen den Spielern stattfinden, dann ist aber trotzdem einer der Spieler der (Spiel-)Server. Soweit ich weiß arbeitet z.B. das alte Battle.net nach diesem Prinzip (also Starcraft 1, Warcraft 2+3 und Diablo 1+2).
 
Danke für Deine Antwort.

Coutnterstrike und World of Warcraft wären für mich schnell.

Um einen schnellen Datenaustausch hinzubekommen müsste man doch eine Socketverbindung herstellten. Mit Java (Applet) würde ich das auch wohl hinbekommen, aber ich möchte das gerne mit PHP oder Javascript hinbekommen. Geht sowas überhaupt?

Um sich mein Problem besser vorstellen zu können hier mal eine Erläuterung:
Ich möchte mit ein Spiel programmieren, dessen grafische Oberfläche mit dem Canvas erstellt werden soll. Bei diesem Spiel sollen mehrere Spieler (4Stück) teilnehmen. Das Canvas müsste laufend neu gezeichnet werde, so dass flüssige Bilder enstehen. Deshalb brauche ich eine schnelle Verbindung zwischen den einzelnen Spielern.

Gruß
Flowmow
 
Seit html5 gibt es die websockets. Ist eigentlich ein http request der zu einer tcp verbindung upgegraded (sche** wort) wird. Leider wird es bisher nur von wenigen browsern unterstützt aber man kann auch die flashsockets usw. dafür verwenden. Dann brauchst du auf dem server noch eine passende komponente. Ich würde bei dem problem auf socket.io setzen (und node.js auf dem server).
 
Um einen schnellen Datenaustausch hinzubekommen müsste man doch eine Socketverbindung herstellten. Mit Java (Applet) würde ich das auch wohl hinbekommen, aber ich möchte das gerne mit PHP oder Javascript hinbekommen. Geht sowas überhaupt?
Mit PHP und Javascript wird es schwer. PHP ist nicht dafür gemacht als Server permanent zu laufen, um z.B. eine Socketverbindung halten zu können. Auch in Javascript gibt es keine Möglichkeit eine Verbindung zu halten. Somit wäre es für den Server nicht möglich den Client über Änderungen der anderen Spieler zu informieren.

Deshalb brauche ich eine schnelle Verbindung zwischen den einzelnen Spielern.
Direkte Verbindungen zwischen den einzelnen Spielern eröffnen noch weitere Problematiken:
- wie finden sich die Spieler, wie tauschen sie ihre IPs und Ports aus?
- SOP
- Firewalls der Spieler


Wenn Dir also die Geschwindigkeit von Ajax nicht ausreicht, dann wirst Du Dir a) einen Kommunikationsserver schreiben (mit einer Technologie abseits von Webserver, PHP und CGI) und b) eine Kommunikationsschnittstelle im Browser schaffen müssen, welche direkt mit Deinem Kommunikationsserver sprechen kann. Plattformübergreifend dürfte das nur mit Flash oder einem Java Applet funktionieren.
 
Zurück
Oben