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

Linux Discussion :

Créer plusieures file de message différentes


Sujet :

Linux

  1. #1
    Membre régulier Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Points : 120
    Points
    120
    Par défaut Créer plusieures file de message différentes
    Salut a tous
    je travail sur un chat local C et je voudrais créer plusieures file de messages différentes (pour en faire une pour chaque client). Pouvez vous me dire comment faire car jusqu'ici a chaque fois que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cle=ftok("ficChat",'a');
    file=msgget(cle, IPC_CREAT | 0666);
    il récupère toujours la file créée précédement (celle créer par le serveur).
    J'ai essayé en mettant IPC_PRIVATE, mais ça ne marche pas.
    Je ne peux pas me permetre de mettre un fichier différents pour chaque cle ftok, car je ne sais pas combien de clients peuvent se connecter. donc je cherche avec une meme clef ftok a créer plusieures file de message différentes.
    Pouvez vous m'aider?
    Merci d'avance

  2. #2
    zul
    zul est déconnecté
    Membre éclairé Avatar de zul
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 498
    Points : 699
    Points
    699
    Par défaut
    ca parait un peu normal étant donnée le code
    cle vaut toujours la même chose
    donc msgget renvoie toujours la même chose.

    Tu peux faire varier la clé en modifiant le second paramètre ( comme indiqué dans le man ). Le second paramètre etant un entier, l'intervalle de valeur devrait être assze grande.

    Sinon tu peux aussi utiliser des noms de fichiers différentes generé aleatoire avec tempnam.

    Enfin derniere possibilité, tu peux utiliser des sockets pour faier communiquer tes processus ( méthode qui me parait meilleur car elle permettrait par la suite une implémentation simple du chat over network ).

  3. #3
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Ta question se rapporte au forum Developpement linux, demande à déplacer ton message là bas.


    Euh, juste une question, pourquoi vouloir utiliser pls files de messages ?

    Ca n'a aucun interet, en fait d'en créer plusieurs. Chaque client attend les messages qui lui sont destinés (voir msgrcv), donc pas besoin de distinguer les files...

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    En effet, faire des files de message différentes est inutile avec les IPC systemV. Le paramètre "type de message" est là pour ça.


    Pour les IPC POSIX par contre, cela aurait été indispensable...

  5. #5
    Membre régulier Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Points : 120
    Points
    120
    Par défaut
    OK.
    en fait j'ai pas le choix. je dois utiliser les files de messages et je dois utiliser des threads dans le serveurs; c'est l'énoncé. Mais je suis d'accord qu'il est pas logique d'en faire plusieures, d'ailleurs ça fonctionne sans là, mais je dois utiliser des threads.
    Donc j'ai pensé a faire une file pour chaque client et une pour le serveur, comme ça le serveur lance un thread pour s'occuper de chaque files.
    Mais si vous avez une idée pour utiliser des threads avec une seule file je prends bien sur.

    Merci de votre aide.

    encore une question pour ftok() le deuxieme parametre est un entier tu dis, pourquoi il peut aussi etre de type char? un char renvoie un entier? Ou bien il y a deux types d'arguments possibles? en tout cas merci, je vais pouvoir continuer mon projet.

  6. #6
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Non, en fait le char correspond à l'ancienne norme pour ftok. Néanmoins, seul 8 bits sont utilisés donc l'int a surement été prévu pour l'avenir mais un char peut être utilisé.


    je dois utiliser des threads dans le serveurs
    C'est à dire qu'un thread sera crée par communication client-serveur, c'est ça ?

    Mais si vous avez une idée pour utiliser des threads avec une seule file je prends bien sur.
    Il faut que tu explique quels parties du serveur nécessitent un thread (as tu des impositions dessus ?), il y a peut être des idées.

    Une idée, c'est pour les clients d'envoyer toujours les messages aux serveur, dans le message, tu indiques une info pour connaitre l'expéditeur et à qui est destiné le message, le serveur se charge de relayer les messages.

  7. #7
    Membre régulier Avatar de progamer54
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Points : 120
    Points
    120
    Par défaut
    C'est exactement ce que je fais. et du coup j'ai pas besoin de thread dans le serveur( il serait stupide de faire des threads sur une seule file ou les threads ne peuvent pas accéder ensemble).
    Et non j'ai pas d'imposition pour les threads dans le serveur.

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

Discussions similaires

  1. [Debutant]Probleme ds file de message
    Par Treuze dans le forum C
    Réponses: 2
    Dernier message: 31/05/2006, 16h38
  2. Réponses: 5
    Dernier message: 24/05/2006, 16h41
  3. [Debutant]Probleme file de message
    Par Treuze dans le forum C
    Réponses: 11
    Dernier message: 15/05/2006, 22h46
  4. Réponses: 8
    Dernier message: 09/02/2006, 19h51
  5. IPC : Files de messages et accès exclusif
    Par thomasvst dans le forum C
    Réponses: 2
    Dernier message: 07/12/2005, 10h47

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