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

C Discussion :

Threads/tcp/SDL problème passage d'information entre fonction d'un programme


Sujet :

C

  1. #1
    Membre du Club Avatar de royal380
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Points : 54
    Points
    54
    Par défaut Threads/tcp/SDL problème passage d'information entre fonction d'un programme
    Bonjour à tous,

    J'ai un nouveau problème qui se pose à moi, mon but est de réaliser un jeu de "air hockey" en réseau.(j'avais déjà ouvert un autre sujet pour un problème différent sur le même projet )
    http://www.developpez.net/forums/d10...asser-tableau/

    Je veux en faite passer les informations sur la position de la balle, et les positions des palets de chacun des 2 joueurs, par le biais d'un client/serveur.

    J'explique un peu:

    J'ai mon "main.cpp" qui contient toute la partie SDL et mon fichier "tcp.c" qui contient ma partie réseau et mes 2 threads envoyer, recevoir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct param
    {
        SOCKET socks;
        signed short nb;
        unsigned short Pos[6];
    };
     
    struct param posi;
    (Ci dessus )c'est la structure que j'envoie par "*p_data" dans les 2 threads(ci dessous):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void * recevoir(void * p_data);
    void * envoyer(void * p_data);
     
    int client(struct param *mesparams);//Prototype de la fonction client
    Imaginons que la position du palet du joueur 1 change :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     case SDL_MOUSEMOTION:
                positionpalet.x = event.motion.x;
                positionpalet.y = event.motion.y;
    
                posi.Pos[4] = event.motion.x;
                posi.Pos[5] = event.motion.y;
             
    /*Ici il faudrait appeler le client ou serveur suivant le joueur pour passer au thread d'envoi la nouvelle position du palet au joueur 2 */
    -1ère question :
    Comment pouvoir utiliser à la fois ma console et ma fenêtre SDL, j'ai déjà essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    freopen( "CON", "w", stdout );
    freopen( "con", "w", stderr );
    Sans succès.
    -2ème quéstion :
    Comment faire pour appeler mes fonctions contenus dans "tcp.c" dans mon main, j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client(struct param * posi);
    Erreur:
    main.cpp|82|error: expected primary-expression before 'struct'|

    Encore une fois sans succés.

    Je peux mettre mon code source en pièce jointe si il y a besoin.

    (Pour info j'ai fait plusieurs recherche et lu tous le cours sur les sockets et threads).

    Merci d'avance

    ----------------------------------------------------------
    One thing : sudo rm -rf /*

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    -1ère question : je n'en sait rien. Il faudrait peut-être poser la question sur le forum SDL

    -2ème quéstion : client(& posi); probablement
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre du Club Avatar de royal380
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Points : 54
    Points
    54
    Par défaut
    Bijour bijour,

    2ème question :J'avais moi aussi tout d'abord pensé à mettre client(&posi); mais quand je compile il y toujours une erreur

    In function `SDL_main':
    main.cpp|82|undefined reference to `client(param*)'|


    Est ce que tu penses que créer un pointeur sur ma fonction pourrait éliminer le problème ?
    Je vais essayer ça de ce pas mais j'y crois pas trop.

    1ère question: Bon bah je vais aller post

    EDIT:

    Après quelques heures de recherche une réponse à ma première question qui était sous mes yeux depuis le début et que j'avais du mal testé

    J'ai été confronté au même problème que toi , et mon ami a trouvé une solution pour avoir la console , tu ajoutes seulement après le main():

    freopen("CON", "w", stdout);
    freopen("CON", "r", stdin);
    freopen("CON", "w", stderr);

    voila je viens de tester ça marche bien chez moi ( je peux faire des printf scanf dans la console )

    voila j'espère que ça répond à ta question =)
    ahh oui je voulais juste préciser que je programme avec code::blocks.

    Mais pour la deuxième je suis toujours entrain de faire des tests et des recherches

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    In function `SDL_main':
    main.cpp|82|undefined reference to `client(param*)'|
    Comme tu n'as pas donné le code incriminé, on ne peut rien dire. Vérifie que tu as bien fait l'include du prototype de client() dans main.cpp.
    D'ailleurs, pourquoi main.cpp et pas main.c ? le fichier risque d'être compilé en c++, pas en C
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Membre du Club Avatar de royal380
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Mai 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Mai 2011
    Messages : 56
    Points : 54
    Points
    54
    Par défaut
    Résolu tout seul comme un grand j'y crois même pas moi même MDR

    J'ai tout rassemblé dans le fichier "main.cpp" ...
    Puis créé des pointeurs sur mes fonctions et puis voili voilou tout fonctionne

    ça fait plaisirrrrrr

    EDIT :

    Merci à toi DIOGENE d'avoir pris la peine de répondre +1

    Et finalement c'était bien un client(&posi) mais ça ne marchais pas quand les fonctions étaient dans "tcp.c"
    Je sais pas du tout pourquoi, mais bon en tout cas maintenant j'ai un fichier main de 3Kilomètres....

    A plousSh

    Royal

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

Discussions similaires

  1. Passage d'information entre deux programmes
    Par CTotophe85 dans le forum C++
    Réponses: 8
    Dernier message: 22/10/2008, 19h37
  2. Problème passage de valeurs entre un Form et procédure
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2007, 09h41
  3. [Theorie] Passage des informations entre les redolog et les tbs undo
    Par lecharcutierdelinux dans le forum Administration
    Réponses: 10
    Dernier message: 07/06/2007, 09h11
  4. passage d'information entre deux pages
    Par hamham dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 30/01/2007, 16h36
  5. Passage d'information entre deux fenêtres
    Par kuuya dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/08/2005, 14h35

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