XML Socket

Hallo!
Ich habe schon soviel gesucht und nichts vernünftiges gefunden!
Ich hoffe das man mir hier helfen kann!
Ich will ein Backgammon Mit Flash schreiben das man zu 2. Spielen kann!
Natürlich soll es auch gestattet sein das zuschauer sich das Spiel anschauen können!
Ich will das die daten per XML ausgetauscht werden!
allerdings habe ich keinen plan wie man mit PHP einen XML Socket Server Schreibt!
es währe toll wenn mir hier einer einen zeigen könnte der funktioniert und mir das erläutert!!!

denn ich habe bis jetzt nicht viel davon verstanden da ich bis jetzt nur Fehlerhafte Quellcods erhalten habe!

Ich bedanke mich schonmal im Vorraus!

PS: Ich will erreichen das der gegenspieler sehen kann wie der andere Spieler die Figur 'Bewegt!
 
mit PHP kannst du einen ServerSocket erstellen dazu siehe hier:
http://de3.php.net/socket_create
(Es gibt nicht viele Tuorials dazu glaube ich aber du kannst im Notfall teile mit der WinAPI vergleichen die Befehlstrukutren sind ähnlich)

Aber ich glaub das du das nicht "live" hin bekommst wie der andere seine Figur bewegt.
 
Also das soll angeblich funktionieren mit der live übertragung den der socket soll ein Realety Port sein!
Den Link den du mir gegeben hast habe ich auch schon gehabt, aber da wird nur erklärt was es für Funktionen gibt und welche parameter die haben, aber wie man die umsetzt das ein Datenaustausch zwischen mehreren Clienten Stattfindet erklähren die da nicht!
Deshalb brauche ich da hilfe wie man diese Funktionen überhaupt einsetzen muss damit sie ihren zweck erfüllen!!!

mfg 01
 
Hallo,
schau bei Google nach!!!! Dort findest du diverse XML Klassen!!!!

Im PHP Manual steht alles drin, was du brauchst!!!! Der Rest sind einfach Netzwerkkentnisse, evt. mal nach Server Client Socket Programmierung im allgemeinen Suchen!!!!

Achja, deine Ausrufezeichen stören die anderen Leser!!!!!!!!!!!, bitte unter lasse dies in Zukunft!!!!!!! und verwende einfach mal einen Punkt .
 
Was soll ein Realety Port sein?

Ein paar Beispiel findest du hier:
http://www.jex-treme.de/forum/thread.php?threadid=19375
http://www.php-resource.de/manual.php?p=ref.sockets

Man kann nicht mal soeben die Funktionen alle erklären nur nen ÜBerblick vll also:

1.
PHP:
 $socket = socket_create (AF_INET, SOCK_STREAM, 0);
muss zuerst ausgeführt werden und gibt ein Handle zu einem Socket zurück.

2.
PHP:
socket_bind ($socket, $address, $port);
dann muss er fest an einen Port gebunden werden aber nicht an Port 80
weil da schon der HTTP Server dran gebunden ist

3.
PHP:
socket_listen ($socket, 10);
dann muss er in den listen Modus geschaltet werden (und es muss
angegeben werden wie viele Client er max. haben kann z.b. hier 10)

4.
PHP:
 $consocket = socket_accept($sock);
diese Funktion ist ein sogenannter Blocking Call d.h. die Funktion kehrt
nicht eher zurück bis sie eine Verbindungsanforderung akzeptieren kann.
Der Return ist ein mitdem Client verbundener Socket über dem man jetzt
senden oder empfangen kann.
Man muss es so machen ein Socket ist immer dazu da Verbindungen
anzunehmen die restlichen sind dann direkte Verbindungen.
5.
PHP:
socket_send ($consocket,$message,strlen($message),0);
sendet den String von $message zum Client.
6.
PHP:
socket_recv ($consocket,$message,256,0);
diese Funktion ist auch wieder ein Blocking Call also wartet solange bis eine
Nachricht ankommt und liest z.b. hier 256 Zeichen in speichert sie in
$message.

7.
PHP:
socket_shutdown ($consocket,2);
schließt den Socket.

--------------------------------------------------------------------
Wie du siehst wird man her evtl. nur einen Client benutzen können(es seiden du sendest nur) da wenn du einen conSocket in recv Mode packst unterbricht alles und er hört nur auf den einen Socket, und zwar solange bis der was empfängt.

Um mehrere Sockets zu verarbeiten muss du socket_select verwenden:


PHP:
$to_read = Array($accSock1,$conSock2);
$int_cSocket = socket_select($to_read, $write = NULL, $except = NULL, 0);

if ($int_cSocket == false) {
  echo "Error";
} else if ($int_cSocket > 0) {
   if (!empty($to_read[0]))
    {
     //So jetzt brauchste hier nur noch mit dem accSocket die Verbindung 
     //akzeptieren und den return_Socket dem Array übergeben und wenn 
     //du 
     //noch empfange willst geht das so ähnlich danach musste select  
     //nochmal 
     //aufrufen am besten rekrusiv
    }
}

gruß
 
so weit so gut denke ich das ich das verstanden hab aber hiermit:

PHP:
<?php $to_read = Array($accSock1,$conSock2);
$int_cSocket = socket_select($to_read, $write = NULL, $except = NULL, 0);

if ($int_cSocket == false) {
  echo "Error";
} else if ($int_cSocket > 0) {
   if (!empty($to_read[0]))
    {
     //So jetzt brauchste hier nur noch mit dem accSocket die Verbindung 
     //akzeptieren und den return_Socket dem Array übergeben und wenn 
     //du 
     //noch empfange willst geht das so ähnlich danach musste select  
     //nochmal 
     //aufrufen am besten rekrusiv

    //Ich hab keine ahnung wie dieser inhalt aussehen soll! :-(
    }
} ?>

komme ich noch nicht zurecht!

könntet ihr mir da ein beispiel geben?
und wie spricht der Client den den Server an? Muss der die php ausführen?

mfg 01
was muss da genau rein wenn ich will das etwa 10 Clienten miteinander komunizieren können?
 
der Client muss mit socket_create nen Socket erstellen und sich dann mit socket_connect($sock,"127.0.0.1", 80); connecten. JA und dann kann das ding senden und empfangen relativ einfach.
Wegen select guck mal nach winsocks tut(übrigens das war schon ein beispiel werd dir hier kein ganzen server socket schreiben).

und wegen deinem Kommentar:
guck dir doch mal bitte die Beispiele unten an:
http://de3.php.net/manual/de/function.socket-select.php
Wenn du PHP Einsteiger seien solltest solltest du besser mit was anderem anfangen
 
Mal was anderes... willst du das im Netz bei irgendeinem Anbieter hosten?
Da ist es so gut wie immer so, dass die Sockets deaktiviert worden sind.
 
...und die Laufzeit auf 60 sek. begrenzt. Da ein Backgammonspiel wahrscheinlcih länger als 60 sek. geht und ich mir sowieso nicht vorstellen kann wie ers live hinbekommen will.
 
Ich habe einen Server wo ich alles selber einstellen kann!
Habt ihr den ne bessere idee wie ich einen Sicheren Datenaustauch mehrerer Clienten verwirklichen kann ohne Java zu verwenden?
Ihr seid die profis und ich der anfänger.
Aber ich lasse mich liebendgerne eines besseren Belehren.

mfg 01
 
Zurück
Oben