IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

[FLASH MX2004] [XMLSocket] Problème avec serveur socket php


Sujet :

Flash

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [FLASH MX2004] [XMLSocket] Problème avec serveur socket php
    bonjour,

    J'ai un client en flash et un serveur socket en php, et j'ai le problème suivant :

    Le client envoie un message au serveur et le serveur renvoie une info. Mais apres le premier passage d'info, le serveur semble recevoir et renvoyer des infos indéfiniement (les même que le permier passage d'info)...

    Pouvez vous m'aider ?

    Merci d'avance

    CocoduNombriL

  2. #2
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut,

    peux-tu poster un peu de code? Cela pourrait peut-etre aider
    Avant toutes questions, consultez nos différentes ressources disponibles gratuitement : XML, Développement Web, Flash/Flex, (X)HTML, CSS, JavaScript, AJAX, ASP
    Offres d'emploi développeur Web

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    oui désolé :

    la page du serveur socket en php (source : http://www.your-socket.com):
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?php
    error_reporting(E_ALL);
     
    //includes divers
     
    set_time_limit (0); // pas de limite dans le temps
    $sock = socket_create(AF_INET, SOCK_STREAM, 0); // on cré le socket
    socket_bind($sock, $address, $port) or die('Could not bind to address'); /// on ecoute sur le bon port
    socket_listen($sock); // on ouvre le socket
    Logging("Demarage du serveur");
     
    $clients = Array(); /// le tableau de liste des clients
    $con_counter = 0; /// un compteur de connection qui sers de pid (process id)
     
    do { /// on tourne en boucle
    	// on prepare le tableau de ce qu'il y a à écouter :
    	$toread=Array();
    	array_push($toread,$sock);
    	for ($i=0;$i<count($clients);$i++) { // pour tous les clients
    		array_push($toread,$clients[$i]["SOCKET"]);
    	}
     
    	$ready = socket_select($toread,$a=null,$a=null,$a=null); // on ecoute sur le tableau
     
     
    	if (in_array($sock, $toread)) { // si l'evenement est sur le socket c'est qu'il y en a un nouveau qui arrive
    		// on l'ajoute à la liste des clients
    		$con_counter++;
    		$cmpt=count($clients);
    		$clients[$cmpt]["SOCKET"]=socket_accept($sock);
    		$clients[$cmpt]["PID"]=$con_counter;
    		$clients[$cmpt]["ID_MEMBRE"]="";
    		socket_write($clients[$cmpt]["SOCKET"], "conect_accept_true".chr(0));
    		Logging("Nouvelle connexion : ".$clients[$cmpt]["SOCKET"]." | ".$con_counter);
    	} else { // c'est un client qui a qq chose a dire
    		for ($i=0;$i<count($clients);$i++) { // pour tous les clients
    			if (in_array($clients[$i]["SOCKET"], $toread)) { // si l'evenement est sur ce client
    				$input = @socket_read($clients[$i]["SOCKET"] , 1024); // on lit le message
    				if ($input == null) { // y'a rien ce qui veut dire que le client s'est deconnecté
    					$pid=$clients[$i]["PID"];
    					Logging("deconnection de ".$clients[$i]["SOCKET"]);
    					array_splice($clients,$i,1); // on le retire du tableau
    					$i--;
    				} elseif (substr_count($input,'[STOP]')>0) {
                                            arret();
                                            break;
                                    } else {
    					$message = trim($input); // on vire les caracteres inutiles
    					//on envoie le message reçu à la fonction traitement qui va le traiter :p
    					traitement($message,$clients[$i]);
    					Logging("reception de ".$message." from ".$clients[$i]["SOCKET"]);
    				}
    			}
    		}
    	}
    }while (true);
     
    arret();
     
     
    ?>
    Pour envoyer une donnee au client, j'utilise la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Envoye
    function send($message,$to){
                  Logging("Envoie de \"".$message."\" à ".$to);
    	 	socket_write($to, $message.chr(0));
    }
    Côté client (Flash MX 2004)
    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
     
    _level0.connection = new XMLSocket();
    _level0.connection.connect(_level0.serveurName, _level0.serveurPort);
    _level0.connection.onConnect = function(succes) {
    	if (succes) {
    		infos_connection = "connection ok !";
    		_level0.gotoAndStop(2);
    	} else {
    		infos_connection = "Echec de la connection !";
    	}
    };
    _level0.connection.onClose = function() {
    	_level0.gotoAndStop(1);
    };
    _level0.connection.onData = function(donnee){
    	_level0.traitementReception(donnee);
    }
    Au niveau de la frame 2, le client se logue et ses infos partent pour le serveur via cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //Envoie au serveur
    _level0.envoie = function(a, b, c) {
    	_level0.connection.send(a+"&"+b+"&"+c);
    };
    Et là, c'est le drame, ses infos (d'apères les logs du serveurs) partent au serveur qui repond, qui les reçois encore, qui rerépond... indéfiniement jusqu'à la déconnection du client, seule solution pour casser cette boucle sans fin !

    J'espère que cela vous aidera et merci encore !

    CocoduNombriL

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    bonjour,

    J'ai trouvé mon erreur, tout fonctionne correctement maintenant !

    Merci de votre aide,

    cocodunombril

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Points : 134
    Points
    134
    Par défaut
    tu as trouvé ton erreur ?
    super !
    mais c'était quoi ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH MX Pro] problème avec php
    Par morgiane dans le forum Flash
    Réponses: 3
    Dernier message: 06/01/2007, 10h30
  2. [FLASH MX2004] [AS2] Problème de return
    Par bolo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 08/04/2005, 08h58
  3. Réponses: 2
    Dernier message: 25/02/2005, 17h05
  4. Réponses: 6
    Dernier message: 08/02/2005, 17h50
  5. [FLASH MX2004 PRO] Problème étrange avec LoadClip...
    Par josemoroide dans le forum Flash
    Réponses: 6
    Dernier message: 04/08/2004, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo