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 :

Client serveur fork


Sujet :

Flash

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 79
    Par défaut Client serveur fork
    Bonjour, flash 8 m'affiche connection echouee apres 6 sec, pouvez me dire si ce code manque quelque chose ?

    Flash:
    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
     
    ipserveur="xxx.xxx.xxx.xxx";//je l'ai volontairement enlevé pour le postage
    _root.variable="identification ...";
     
     
    mySocket = new XMLSocket();
     
    mySocket.onConnect = function(success) {
    if (success) {
    _root.variable= "connection ok";
    } else {
    _root.variable= "connection echouee";
    }
    };
     
    mySocket.onClose = function() {
    _root.variable= "connection fermee";
    };
     
    XMLSocket.prototype.onData = function(msg) {
    _root.variable= msg;
    };
     
    mySocket.connect(ipserveur, 18000);
     
    stop();
    serveur:
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    int main(int argc, char* argv[])
    {
     
      int ds,port,ta,da,sock;
      struct sockaddr_in name;
     
      puts("Serveur en attente");
      puts("");
     
      port = 18000;  
      ds = socket(PF_INET, SOCK_STREAM, 0); //On crée notre socket de connection
     
      if(ds < 0) //Avec un test pour éviter les erreurs
      {
          perror("Probleme socket : ");
          exit(-1);
      }
      init_sockaddr(&name,"0.0.0.0",port); //On initialise notre socket internet, le port ecoute sur toute les adresse
      if (bind(ds, (struct sockaddr *) &name, sizeof(struct sockaddr)) < 0) //On bind
      {									//Avec un test pour éviter les erreurs
          perror("Probleme bind : ");
          exit(-1);
      }
      if(listen(ds, FILED) < 0 )	//On listen dans notre socket de connexion jusqu'à "FILED" client max
      {				//Avec un test pour éviter les erreurs
          perror("Probleme listen  ");
          exit(-2);
      }
      while(1)	//Serveur multi-client donc boucle infinie
      {
     
          FD_ZERO(listeClients);	//On reinitialise notre liste d'attente
          FD_SET(ds,listeClients);	//Dans laquelle on place notre socket de connexion
          if((select(FILED+1, listeClients,  NULL, NULL,NULL)) < 0)	//On fait notre select sur notre liste de client
    	  {							//Avec un test pour éviter les erreurs
    	    perror("select");
    	    exit(-3);
    	  }   
          for(sock=3;sock < FILED;sock++)	//On parcourt toutes nos (potentielles) sockets
    	  {
     
    	    if(FD_ISSET(sock,listeClients))	//On regarde quelle descripteur change d'etat
    	    {
    	      if(sock==ds)	//Si c'est la socket de connection...
    		  {
    		     da = accept(ds, (struct sockaddr *) &name, &ta);	//...on l'accepte...
    		     if(da < 0)					//...toujours avec un test pour éviter les erreurs...
    		     {
    		       perror("Probleme accept  ");
    		       exit(-3);
    		     }
    		     printf("Connexion socket n°%d établie\n",da);
    		     FD_SET(da,listeClients);	//...et on la rajoute dans notre liste de clients
    	      }
              else str_echo(sock);//traiterClient(sock);	
              //Si ce n'est pas la socket de connection, c'est alors une socket de data
    		  //On appelle donc notre fonction de transfert proprement dite en passant en argument...
            }	//...la socket où le client envoi son fichier
          }
      }
      close(da);	
      close(ds);
      return 0;
    }
     
     
    void init_sockaddr (struct sockaddr_in *name, const char *hostname, uint16_t port)
    {
      struct hostent *hostinfo; 
     
     
      name->sin_family = AF_INET;   // Adresses IPV4 (Internet) 
      name->sin_port = htons (port); // On gère le little/big Endian 
     
      hostinfo = gethostbyname (hostname); // appeler les fonctions de résolution de nom de la libC 
     
      if (hostinfo == NULL) // Si ne peut transformer le nom de la machine en adresse IP 
        {
          fprintf (stderr, "Unknown host %s.\n", hostname);
          exit (-1);
        }
      name->sin_addr = *(struct in_addr *) hostinfo->h_addr; // Le dernier champs de la structure est garni 
    }
    void str_echo(int sockfd)
    {
    	printf("Bonjour\n");
    }
    Affiche:
    Serveur en attente

    ---> je lance le flash
    Connexion socket n°4 établie
    Bonjour

  2. #2
    Membre confirmé Avatar de ia.jenny
    Profil pro
    Inscrit en
    Août 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 152
    Par défaut
    salut,
    Je ne sais pas pour ton problème , mais c'est exactement ça que je cherche pour mon jeu en Flash.
    http://dune.2.free.fr/Dune2_Play.html
    Sinon, c'est pas un problème avec ton pare-feu, je suppose que tu as regardé.
    j'espère que tu vas trouver une solution.

Discussions similaires

  1. serveur multi client avec fork()
    Par deby23 dans le forum Réseau
    Réponses: 17
    Dernier message: 11/09/2007, 16h32
  2. Réponses: 4
    Dernier message: 06/01/2007, 21h42
  3. Quel outil pour du développement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 02/11/2002, 14h57
  4. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 16h58
  5. Langage le mieux adapté pour application client serveur ?
    Par guenus dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 17/06/2002, 15h46

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