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 :

Socket en flash


Sujet :

Flash

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 272
    Points : 166
    Points
    166
    Par défaut Socket en flash
    Bonjour,

    J'ai un serveur en Perl fait maison dont voila le source:

    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
    #!/usr/bin/perl
    use Socket;
    $ENV{'PATH'} = '/bin:/usr/bin';
    delete @ENV{ 'IFS', 'CDPATH', 'ENV','BASH_ENV'};
     
    $utilisateur        = "nobody";
    $this_host          = "*";
    $port               = 1026;
    $server_addr        = (gethostbyname($this_host))[4];
    $server_struct      = pack("S n a4 x8", AF_INET, $port, $server_addr);
    $proto              = (getprotobyname("tcp"))[2];
    socket( SOCK, PF_INET, SOCK_STREAM, $proto ) || die "Impossible d'initialiser la socket: $!\n";
    setsockopt( SOCK, SOL_SOCKET, SO_REUSEADDR,1 ) || die "setsockopt() foire: $!\n";
    bind( SOCK, $server_struct ) || die "bind foire: $!\n";
    listen( SOCK, SOMAXCONN ) || die "listen foire: $!\n";
    unless ($uid = (getpwnam($utilisateur))[2])
    {
       die "Tentative de lancer le serveur en tant qu'utilisateur inexistant ou supperutilisateur\n";
    }
    print "UID: $uid\n";
     
    for ( ;; )
    {
       $remote_host = accept( NEWSOCK, SOCK );
       die "accept() erreur: $!\n" unless ($remote_host);
       $raw_addr = ( unpack( "S n a4 x8", $remote_host ) )[2];
       @octets = unpack( "C4", $raw_addr );
       $adresse = join( ".", @octets );
       print "Connexion de: $adresse\n";
       print NEWSOCK "toto";
       print "Termine\n";
       close(NEWSOCK);
    }
    En fait c'est un serveur tout simple, qui renvoi "toto" a chaque connexion. Ca marche en faisant telnet 192.168.0.4 1026

    J'essai de faire un client en flash qui fait la meme chose, j'ai donc un bouton et un testfield ( texte ).

    Voici mon script:
    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
    var socket = new XMLSocket();
    socket.onConnect = connexion;
    socket.onData = reception;
    socket.onClose = deconnexion;
     
    function connexion(isOk)
    {
    	if(isOk) // la connection s'est bien déroulée
    		texte.text += "OK Connexion\n";
    	else
    		texte.text += "Echec de la connexion !\n";
    }
     
    function deconnection()
    {
    	texte.text += "connection terminee.\n";
    }
     
    function reception(chaine)
    {
    	texte.text += "["+chaine.toString()+"]\n";
    }
     
    bouton.onRelease = function() {
    	texte.text="tentative de connexion\n";
    	socket.connect( "192.168.0.4", 1026 );
    }
    La connexion se fait bien, mais le fonction reception n'est jamais appelé, donc il n'imprime pas le toto. De plus, bien que mon script ferme la connexion, la fonction deconnection n'est pas appelé non plus.

    J'utilise la version d'evaluation de flash professionnel 8. C'est la premiere fois que je fais du flash...

    Avez-vous des idées ?
    Merci par avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 272
    Points : 166
    Points
    166
    Par défaut Pour le probleme de deconnexion
    Re,

    Pour ce probleme ( l'evenement deconnexion jamais appele ) c'etait du a une faute de frappe entre deconnection et deconnexion ( je n'ai meme pas eu d'erreur pour ca... ) Sinon il me reste le probleme du "toto" qui n'apparait pas ( evenement reception non appele.

    Cordialement.

  3. #3
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Je te conseille de consulter ce petit tuto sur les communication Flash et un serveur : Chat en Flash

    A mon avis lorsque tu déclares ton XMLSocket, utilises plutôt le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var socket = new XMLSocket();
    socket.onConnect = connexion;
    socket.onXML = reception;
    socket.onClose = deconnexion;
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 272
    Points : 166
    Points
    166
    Par défaut Deja essaye
    Re,

    En fait je me suis base sur le chat en flash pour faire mon script, j'ai deja essayé ta methode mais j'ai le meme resultat.

    Merci.

  5. #5
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Nouvelle idée
    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
     
    var socket : Object = null;
    var connected : Boolean = false;
     
    function connexion(isOk){
    	if(isOk) // la connection s'est bien déroulée
    		texte.text += "OK Connexion\n";
    	else
    		texte.text += "Echec de la connexion !\n";
    }
     
    function deconnection(){
    	texte.text += "connection terminee.\n";
    }
     
    function reception(chaine){
    	texte.text += "["+chaine.toString()+"]\n";
    }
     
    bouton.onRelease = function(){
    	if(not connected){
    		socket = new XMLSocket();
    		socket.onXML = reception;	
    		socket.connect( "192.168.0.4", 1026);	
    		socket.onConnect = connexion;		
    		socket.onClose = deconnexion;
     
    		texte.text="tentative de connexion\n";
    		connected = false;
    	}
    }
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 272
    Points : 166
    Points
    166
    Par défaut Idem
    Bonjour,

    Toujours pareil.

    Merci.

  7. #7
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Dans ta procédure reception, ajoute le code suivant pour réceptionner correctement la chaîne reçue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    chaine = chaine.firstChild;
    while (chaine.nodeName == null)
       chaine = chaine.nextSibling;
    Juste une question, le message reçu est-il bien au format XML et pas seulement une chaine de caractères ?
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 272
    Points : 166
    Points
    166
    Par défaut Trouve :o)
    En fait le probleme venait du serveur en Perl, pour que ma chaine transmise soit prise en compte il faut ajouter un 0 a la fin de la chaine.

    Dans le source perl, il faut remplacer:

    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print NEWSOCK "toto\0";
    Et la la chaine est bien recu par flash, mais c'est un peu zarbi comme facon de faire.

    Sinon au debut mon serveur renvoyait une chaine XML, mais ca marche aussi avec une chaine classique.

    Merci encore !

  9. #9
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Content que tu ai trouvé la solution
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

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

Discussions similaires

  1. Socket xml flash/PHP
    Par Invité dans le forum Dynamique
    Réponses: 1
    Dernier message: 03/03/2010, 14h17
  2. [FLASH][SOCKET] XMLsocket sous Flash
    Par Muetdhiver dans le forum Dynamique
    Réponses: 3
    Dernier message: 29/10/2009, 11h38
  3. [FLASH MX2004] [XMLSocket] Problème avec serveur socket php
    Par cocodunombril dans le forum Flash
    Réponses: 4
    Dernier message: 03/04/2009, 02h10
  4. faire parler php et flash sans sockets
    Par jc_cornic dans le forum Langage
    Réponses: 6
    Dernier message: 01/05/2007, 11h24
  5. python & flash : communication via socket -> Null byt
    Par arcane14 dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 30/01/2006, 21h19

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