Daten schnell vom Server lesen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

ChristianK

Betreff: Daten schnell vom Server lesen

BeitragFr, Apr 27, 2007 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will alle laufenden Spiele ( bzw. alle IPs der Hosts ) auf einem Server speichern und dann von den Clients abrufen lassen.
Ich habe hier im Forum auch schon ein paar Sachen gefunden, aber ich weiss nicht, wie ich die Daten am schnellsten vom Server abrufen kann. Soll ich das mit PHP, FTP oder doch mit irgendwas anderem machen? Mir kommt es dabei vor allem auf Geschwindigkeit und Zuverlässigkeit an.

Vielen Dank schon mal im Voraus. Smile
 

Dreamora

BeitragFr, Apr 27, 2007 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
DLL schreiben die dir MySQL Queries ausführt und dir ne Datenbank machen aufm Webserver wo du es einträgst.

Als zweitschnellstes käme dann PHP

FTP wäre worst case, da die sicherheit da ziemlich im eimer ist, auch für deinen FTP zugang.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragFr, Apr 27, 2007 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, dann werd ich MySQL nehmen. Very Happy
 

ChristianK

BeitragSa, Apr 28, 2007 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir sind da noch zwei Fragen eingefallen:

1. Wenn ich die MySQL Datenbank über ein PHP-Script aufrufe ( und der Loginname und das Passwort in der PHP-Datei stehen ), sind meine Daten dann sicher?

2. Die IP-Adressen eines Hosts muss ja auch wieder vom Server gelöscht werden, wenn er das Spiel beenden. Was ist aber, wenn der PC des Hosts abstürtzt? Dann bleibt die IP noch auf dem Server. Kann man überprüfen, ob der Host noch aktiv ist?

PS: Sorry für den Doppelpost.
 

Schnuff

BeitragSa, Apr 28, 2007 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
dann setzt ein timeout...
ales was älter als z.B. einen Tag ist, wird gelöscht

und sicher ist im I-Net generell nichts
Programmers dont die. They gosub without return...

Smily

BeitragSa, Apr 28, 2007 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
php ist im Internet schon realtiv sicher.
Wenn die Serversoftware und Scripts keine Sicherheitslücken haben, kommt man auch nicht an das, was in der php drin steht.
Letztendlich wird ja eigentlich nur von Server bestimmt, was der Client sehen darf und was nicht ^^

Gruß, Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

ChristianK

BeitragSa, Apr 28, 2007 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Antworten. Very Happy

Noch eine Frage:
In BlitzMax kann man eine Datei direkt aus dem Internet öffnen:

Code: [AUSKLAPPEN]
Local file:TStream = ReadFile( "http::www.meinepage.de/datei.txt" )

Mit Blitz3D geht das leider nicht. Gibt es eine andere Möglichkeit?
 

ChristianK

BeitragSa, Apr 28, 2007 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Die IPs kann ich jetzt auf dem Server speichern und der Spieler kann dann auch an einem Spiel teilnehmen.
Aber das Problem mit dem Löschen der IP vom Server, wenn das Spiel beenden wird, besteht immer noch. Einen Timeout will ich eigentlich nicht verwenden. Spiele, die nicht mehr laufen, sollen garnicht erst angezeigt werden.
Vielleicht könnte der Client beim Lesen der Serverliste überprüfen, ob ein Spiel noch läuft, und wenn nicht, dann wird es aus der Liste gelöscht. Habt ihr eine Idee, wie man das machen kann?

Smily

BeitragSa, Apr 28, 2007 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Timeout funktioniert so:
Du sendest deinen Clienten ein ping-Signal, welches sie mit einem Pong-Signal beantworten müssen.
Kommt innerhalb einer bestimmten zeit kein pong ist der Client wohl tot.

in Blitz3d kannst du die datei mit http abrufen.
der port ist 80. Für das Protokoll findest du hier ne menge beispiele.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

ChristianK

BeitragSa, Apr 28, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, danke Smily. Very Happy
Wie sende ich denn das Ping-Signal?

Smily

BeitragSa, Apr 28, 2007 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau so, wie du auch alle anderen Daten sendest. Laughing

Writeline tcp, "PING"

und du machst beim Client noch in der Auswertung:
if string$ = "PING" Writeline tcp, "PONG"
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

ChristianK

BeitragSa, Apr 28, 2007 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Problem sind ja nicht die Clients, sondern die Hosts, die das Spiel starten. Die IPs dieser Hosts werden auf einem Server gespeichert. Wenn dann jemand mitspielen will, wählt er aus der Liste der IPs eine aus und wird dann mit dem Host verbunden.
Ich müsste dann die Pings vom Server aus schicken oder der Client müsste jeden Host anpingen. Das würde aber recht lange dauern, mit jedem Host zu connecten.

PS: Tut mir Leid, wenn ich dich falsch verstanden haben sollte. Smile

Smily

BeitragSa, Apr 28, 2007 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Ping wird nur benötigt, wenn ein Server Prüfen muss, ob der Client noch mit ihm verbunden ist.
Es reicht, wenn du z.B. alle 10 sek. ein Ping an die Clienten sendest.

Ich schätz mal um die Hostliste abzurufen brauchst du nur eine einmalige kurze Verbindung mit dem server, wo die Liste ist. ^^

Gruß, Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

ChristianK

BeitragSa, Apr 28, 2007 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Liste kann ich ja schon abrufen, funktioniert einwandfrei.
Nur müssen die Hosts, die nicht meht aktiv sind ( weil der Rechner abgestürtzt ist oder die Internetverbindung unterbrochen wurde ) auch wieder aus der Liste gelöscht werden.

Smily

BeitragSa, Apr 28, 2007 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur damit ich das Richtig verstehe:

Es gibt bei dir Clienten, Hosts und einen Server

Auf dem Server ist eine Liste aller Hosts
und die Hosts stellen verschiedene Spieleserver bzw Spielewelten dar?

Lass den Server einfach in bestimmten abständen versuchen Kontakt mit dem host aufzunehmen.

Gruß, Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Silver_Knee

BeitragSo, Apr 29, 2007 1:17
Antworten mit Zitat
Benutzer-Profile anzeigen
haha!! idee:
dein phpscript überprüft beim auslesen der liste das alter jedes Eintrags:
ist er älter als 5 min wird er gelöscht!

Ein host muss also innerhalb von 5 min sein spiel bestätigen:
Er baut eine verbindung zum php-script auf und sendet ihm
125.455.255.354 ICH LEBE NOCH
Der phpscript löscht daraufhin das spiel von 125.455.255.354 aus der liste und setzt es gleich danach wieder hinein

So bleibt er immer jünger als 5 min. Sollte der Host für länger als 5 min ausfallen und irgend ein client holt sich die Host-liste wird der eintrag gelöscht.
 

ChristianK

BeitragSo, Apr 29, 2007 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, FTC! Very Happy

Ich denke, so werd ich das machen.

Aber noch eine Frage:
Der Host baut alle 5 Minuten eine Verbindung zum Server auf.
Also würde er ja jedes Mal das hier machen:

Code: [AUSKLAPPEN]
stream = OpenTCPStream( "www.DerEineServer.de", 80 )

Das braucht ja immer etwas Zeit, zum Server zu connecten. Kann man die Verbindung einfach das ganze Spiel lang stehen lassen, ohne dass der Server überlastet wird oder es zu Performance-Problemen kommt?

Silver_Knee

BeitragSo, Apr 29, 2007 11:44
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst die verbindung ruhig offen lassen ich weiss nur nicht ob das HTT-Protokoll das zulässt..... da ich erst seit 1 monat inet habe kenn ich mich da noch nich so aus...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group