Bonjour,
J'essaie en ce moment de faire échanger mon swf avec un serveur via une socket xml. Pour l'envoie vers le serveur ça marche nickel. Ensuite le serveur renvoie bien un xml vers le swf. Mais là impossible de récupérer quoique ce soit.
Code : Actionscript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 var theSocket:XMLSocket = new XMLSocket(); theSocket.connect('localhost', 2010); function sendData() { var myXML:XML = new XML(); var mySend = myXML.createElement("thenode"); mySend.attributes.myData = "someData"; myXML.appendChild(mySend); theSocket.send(myXML); }; // le bouton envoie des données sendButton1.onRelease = function() { sendData(); }; theSocket.onConnect = function(myStatus) { if (myStatus) { trace("connections successful"); } else { trace("no connection made"); } }; theSocket.onData = function(msg):Void { trace("1"+msg); }; stop();
Du côté PHP j'ai codé ainsi :
Code : PHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 <?php //Temps maximum d'exécution de la page <gras><couleur nom="rouge">nul</couleur></gras> set_time_limit(0); //Coordonnées du serveur == le pc qui lancera cette page $port = 2010; $adresse = "127.0.0.1"; //On crée la socket if(($socket = socket_create(AF_INET, SOCK_STREAM, 0)) === false) echo 'La création de la socket a échoué : '.socket_strerror($socket)."\n<br />"; //On assigne la socket à une adresse et à un port, que l`on va écouter par la suite if(($assignation = socket_bind($socket, $adresse , $port)) < 0) echo "L'assignation de la socket a échoué : ".socket_strerror($assignation)."\n<br />"; //On prépare l`écoute if(($ecoute = socket_listen($socket)) === false) echo "L'écoute de la socket a échoué : ".socket_strerror($ecoute)."\n<br />"; //Le code se bloque jusqu`à ce qu'une nouvelle connexion client soit établie if(($client = socket_accept($socket)) === false) echo "Le client n'a pas pu se connecter : ".socket_strerror($client)."\n<br />"; //Lors d'une connexion, le code reprend ici, il est temps de lire ce qu'on nous envoie if(($reception = socket_read($client , 255)) === false) echo "La socket n'a pas pu être lue : ".socket_strerror($reception)."\n<br />"; else echo "La socket a pu être lue et le message est : ".htmlentities($reception).'<br />'; //Si ça ne marche pas, c'est qu`il est déconnecté $reponse = $reception; $reponse = '<thenode myData="someDataEnPlus" />0'; if(( socket_write($client, $reponse, strlen($reponse)) ) === false) echo "Client déconnecté\n<br />"; else { echo 'Message envoyé : '.htmlentities($reponse).'</br>'; } //Fermeture de la socket du client socket_close($client); //Fermeture du serveur socket_close($socket); ?>
A l'exécution, je lance le serveur, puis le flash. Le serveur tourne et dès que j'envoie les données du flash ça m'affiche côté serveur :
La socket a pu être lue et le message est : <thenode myData="someData" />
Message envoyé : <thenode myData="someDataEnPlus" />0
Tout est donc normal côté serveur sauf que le flash ne reçoit pas les données en retour. Or si je fait la même chose avec un client php et non flash ça marche très bien. Où est le hic ? Qu'ai je oublié ?
En effet du côté Flash je m'attends à voir mon message XML qui est tracé au retour or rien du tout !
Merci énormément de votre attention !!
Benoît
Partager