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

Réseau C Discussion :

Utilisation de Select [Win/Linux]


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut Utilisation de Select [Win/Linux]
    Nouveau sur le forum: donc salutations toussa !
    je viens vous faire partager mes problemes (et ptetre partager mes connaissances avec les moins experimentés)
    donc:
    dans l'optique de realiser un jeux de Tarot Multijoueur avec un topain ... on s'est lancé dans le codage de tout ce merdier ...
    lui s'occupe de la partie GTK (oui, on utilise GTK) et algorythme du jeux de carte.
    et moi de la partie reseau.
    (bon le background toussa, c'est fait )

    l'ebauche de ce client/server marche parfaitement sous linux ... par contre, sous windows ... select as tendance a deconner ...
    le bout de code: (apres j'explique les symptomes, promis)
    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
    	for(;;)
    	{
    	listenfdset = masterfdset;
     
        if (select(sockfd+1, &listenfdset, NULL, NULL, NULL) == -1) 
    	{
        perror("select");
        exit(1);
        }
     
    	if (FD_ISSET(sockfd,&listenfdset))
    	{
    	memset(recvbuf,0,sizeof(recvbuf)); //clearing recvbuf
    	len = recv(sockfd, recvbuf, sizeof(recvbuf), 0); //receiving
    	if ( len == 0 )
    	{
             close(sockfd);
             break;
        }
        else if ( len > 0)
    	if(parser(recvbuf) == 2)
    	printf("data received:%s",recvbuf); //comment really needed?
    	}
     
    	if(FD_ISSET(0, &listenfdset))
    	{
    	fgets(sendbuf,sizeof(sendbuf),stdin);
    	send(sockfd, sendbuf, strlen(sendbuf), 0);
    	}
    	}
    ce qu'il se passe donc:
    - sous linux, ca marche impecable !
    - sous windows, le select renvoie une erreur. No Error qu'il me dis (je veux bien hein)
    donc, en commentant le exit, le reste s'execute ... les FD_ISSET renvoient 'TRUE' et donc ca "bloque" sur le recv ou le fgets ...

    chose etonnante, il y'as aussi un select sur la partie serveur ... et le serveur semble marcher correctement.

    le code complet: http://site.voila.fr/Warfactory/tarot_server.c
    note: la partie serveur ressemble bcp a l'exemple donné par beej (dans le lien au debut), c'est normal, j'ai fait un copié // collé
    je pense pas qu'il m'en veuille ...

    edit: Nom des Variables suite a reproche 8)

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    listen = main;

    if (select(sockfd+1, &listen, NULL, NULL, NULL) == -1)
    Des variables qui ont le nom des fonctions... c'est pour l'IOCCC ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    j'ai tres peu d'imagination ... j'avoue que c'est pas vraiment malin, jvais tacher de trouver autre chose

  4. #4
    Membre éclairé
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Par défaut
    je rencontre le meme probleme, j'aimerais egalement avoir la reponse a ce probleme.
    Merci

  5. #5
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    Citation Envoyé par yvesall Voir le message
    je rencontre le meme probleme, j'aimerais egalement avoir la reponse a ce probleme.
    Merci
    belle remontée de topic

    il fallait en fait lire en détail la MSDN et comprendre que select sous windows ne marche QUE sur un socket.
    l'utilisation sur des flux (fichiers/standard ios) ne marche pas sous windows

  6. #6
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Ton lien m'interresse, je vais faire le tuto ^^

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Dark_Ebola Voir le message
    l'ebauche de ce client/server marche parfaitement sous linux ... par contre, sous windows ... select as tendance a deconner ...
    le bout de code: (apres j'explique les symptomes, promis)
    http://emmanuel-delahaye.developpez....reseaux-c/#LVI

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

Discussions similaires

  1. [C#] Comment utiliser des dll win 32 dans un projet .NET
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 31/05/2005, 13h45
  2. Quel langage pour une meilleure portabilité Win/Linux
    Par darkervein dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/04/2005, 14h59
  3. [JFrame] [Win/Linux] Comportement keyPressed/keyReleased
    Par plegat dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 23/11/2004, 18h27
  4. partage de connexion win-linux
    Par ynnotna dans le forum Développement
    Réponses: 2
    Dernier message: 15/07/2003, 15h38
  5. Réseau Win/Linux
    Par ben91 dans le forum Développement
    Réponses: 2
    Dernier message: 08/09/2002, 22h59

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