-
IPCS file de message
Bonjourje viens de creer ma toute premiere application client serveur utilisant des MSQ, j'ai une petite question en cas de connection de plusieurs clients simultané, est ce que le resultat arrivera toujours au bonne endroit (client emetant l'info) ou faut il qu'avec chaque MSQ envoyé j'envoi un identifiant comme le pid pour que je le compar avec celui du processus a la relecture ??
-
En effet, les messages qui circulent dans les MSQ on un champ "long mtype" qui permet au processus client, lorsqu'il utilise msgrcv avec le 4e paramètre positif, de ne choisir que le message le plus ancien dont le type correspond à cette valeur. On peut donc utiliser dans ce champ le pid du process (qui est unique) pour garantir que seul le processus visé aura le message.
-
Désolé de resortir se sujet mais je viens d'etre confronter a un probleme, je faisais donc une verification de mon pid avec un boucle while du genre :
while (PIDProgramme != PIDRenvoyerParServeur) lire PIDRenvoyerPArServeur;
Mais apparament le faite de lire une info de la MSQ la supprime :-( donc en verifiant un PID je le supprime pour un autre programme !!
Est ce bien ca ??
Et si oui comment regler ce probleme ??
-
oui c'est bien cela. les queues de messages sont une sorte de "first in first out ", donc la lecture efface le message. Mais je comprend pas bien , en temps normale on créer 1 file de message par programme, si une information doit être envoyée a plusieur programme, elle est expedier auant de fois qu'il y a de programme.
Si c'est une infrmation destiné a être recuperer par plusieur programme, il convient souvent de travailler avec de la shared memory et semaphore, la pluseurs applications peuvent lire et "marquer" leurs lectures, l'information reste disponible tant que l'on ne l'efface pas explicitement.
-
oki merci pour ton message, en fait pour ta compréhension, j'ai un processus Serveur et une multitude de fils et le serveur et ses fils communiquent par les MSQ.
-
sr ton "serveur" qui recoit donc de tout les autres process il te faut donc lire le 1er message de la fille, puis analyser qui est l'expediteur.
le champ mtype, pourquoi pas, mais il me semble preferable de "formater" tes messages avec une entete.
entete qui indiquerai des information sur l'expediteur, le type de message (s'il existe plusieur type), un numero de message,peut etre un horodatage, et enfin un "corps" de message comprenant le message a proprement parler qui serait traitable par rapport au numero/type.