Forum Programmation.c pb gestion reception et envoie sur un xterm

Posté par  .
Étiquettes : aucune
0
22
mai
2005
Salut tlm,

J'ai besoin d'aide car j'en pe plus je ne trouve rien sur le net!!
J suis entrain de coder un serveur-client irc en c pratiquement fini, et le seul probléme c'est de gerer les envoies et receptions de messages, or ce que je n'arrive pas à trouver c'est comment rediriger un message recu du serveur vers un xterm precis.
Ou si quelqu'un à une autre idée envisageable pour ce probléme, je suis pret à tout car désespéré :s...

Merci,
Sheryo.
  • # printf ?

    Posté par  . Évalué à 1.

    printf ?

    Sinon essaie d'être plus précis, je ne comprends pas trop ta question.
    • [^] # Re: printf ?

      Posté par  . Évalué à 1.

      En fait printf affiche sur la sortie standart du xterm en cours.
      Mon probléme est que je veux recevoir le messages des autres client connecté sur irc dans un xterm autre que celui ou j'ecris les msg.
      c'est à dire savoir redirigé un message vers un xterm precis?!!
      Je suis obligé de devoir cela car sinon il y a entrrelacement entre ce que j'ecris et ce que je recoit du serveur...
      j'espère etre plus claire.
      • [^] # un xterm n'affiche que ce que le programme qu'il exécute affiche

        Posté par  . Évalué à 2.

        un xterm n'affiche que ce que le programme qu'il exécute affiche (par défaut un shell)

        donc il faudra lancer quelquechose comme

        xterm -e mon_client_special

        où mon_client_special est un programme qui communique avec ton autre client par le moyen de ton choix (socket, pipe...)
        • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

          Posté par  . Évalué à 0.

          Je ne pense pas avoir bien compris...
          Dans mon implémentation de ce serveur client irc j'ai crée 2 classes un qui gére le serveur et l'autre qui gére le client.
          Quant un serveur se connecte les clients peuvent se connecter a leur tour, mais je ne vois pas ce ke ca changerai d'exécuter xterm -e client ?? ca n'ouvre juste qu'un nouveau xterm et d'ailleur j'ai essayer et j'ai eu une erreur du type "cant write date"??
          • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

            Posté par  . Évalué à 2.

            Si tu veux un client qui affiche tes messages et un client qui affiches les autres messages (je trouve pas ça très pratique d'ailleurs), alors il te faut 2 clients différents.
            client1 affiche tes messages
            client2 affiche les autres

            client2 peut communiquer directement avec le serveur, qui ne lui envoie que les messages des autres

            ou client2 peut communiquer avec client1, qui ne lui envoie alors que les messages des autres
            • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

              Posté par  . Évalué à 0.

              oui mais a ce moment là faudrait exécuter 2 programmes client à la fois, c vrai que c pas trés pratique....
              Si je comprend bien il n'exite pas de moyen de rediriger les msg vers un xterm précis, sans réexecuter un autre prog?!!!
              • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                Posté par  . Évalué à 1.

                Ce que tu peux faire, c'est utiliser un named pipe. Par exemple, fais :
                mkfifo /tmp/monfifo

                Ensuite, de ton client IRC, ouvre /tmp/monfifo et écris dedans avec fprintf (ou autres).

                Puis fais :
                xterm -e 'cat /tmp/monfifo' pour afficher ce que tu as écris dedans. (Ou tail -f ?)
                • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                  Posté par  . Évalué à 0.

                  si j'ai bien compris j'ouvre /tmp/monfifo et je redirige la sortie standard a l'aide d'un pipe sur /tmp/monfifo?!
                  Mais est ce que le fait d'écrire des choses au fur et à mesure sur /tmp/monfifo m'obligera a réouvrir ce fichier avec xterm -e 'cat /tmp/monfifo' ou le fait de faire une fois cette commande m'affichera tous ce qui s'ecrit aprés l'execution de xterm -e 'cat /tmp/monfifo'??
                  Merci,
                  Sheryo.
                  • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                    Posté par  . Évalué à 1.

                    Essaie, tu verras. Si ça ne marche pas comme tu veux avec cat essaie tail -f. Regarde les pages de man si c'est pas clair.
                    • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                      Posté par  . Évalué à 0.

                      c'est claire, j'ai essayé mais ce que je craigné est arrivé c'est à dire ke rien ne s'affiche aprés exécution du xterm -e 'cat...'.. la redirection marche mais pas l'affichage.
                      • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                        Posté par  . Évalué à 2.

                        si tu pouvais nous donner les commandes (et dans quel ordre) ou le source que tu utilises, ça serait mieux pour t'aider à faire ton debuggage !
                      • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                        Posté par  . Évalué à 3.

                        [~]$ cd /tmp/
                        [/tmp]$ mkfifo abc
                        [/tmp]$ xterm -e 'cat abc' &
                        [1] 3789
                        [/tmp]$ cat > abc
                        
                        Ce que tu tappes s'affiche sur le 2e xterm. ^D pour terminer.
                        [1]+  Done                    xterm -e 'cat abc'
                        [/tmp]$ 
                        
                        Au lieu d'utiliser cat > abc, écris dans abc à partir de ton programme. Je ne vois pas comment être plus clair.
                        • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                          Posté par  . Évalué à -1.

                          j te remercie de ta patience et pour cette explication..
                          mais pourais tu me donner plus de détail sur l'application avec un printf dans mon prog stp..
                          En fait j'ai fait:
                          mkfifo("mP",777);
                          int fd = open("mP",O_RDWR);
                          system("xterm -e '?? mP' &"); /* que dois je mettre à la place de ?? ==> printf?
                          pour pouvoir afficher la sortie standard*/

                          ou une redirection avec dup2(fd,1)?
                          j'ai essayer cette derniére solution mais cela ne marche pas...
                          Merci,
                          Sheryo
                          • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                            Posté par  . Évalué à 3.

                            Sans offense, un bon service qu'on peut te rendre est de te conseiller la lecture d'un cours sur la programmation sous Unix. Notamment les chapitres tubes (fifo) et sorties standards. En français, j'aime bien le livre de JM Rifflet.
                            • [^] # Re: un xterm n'affiche que ce que le programme qu'il exécute affiche

                              Posté par  . Évalué à 0.

                              je te remercie du service mais en fait je suis étudiant.. donc je suis entrain d'apprendre, ca fait juste quelques mois que je fais de systéme à fond, donc c vrai je peux paraitre dépassé mais bon y en as des choses :S!!!
                              et crois moi crois moi pas, je crois que g poser la question mon à 3 ou 4 prof et personne n'a su répondre à mon probléme..
                              donc ben j me débrouille :(...
                              En tout cas merci vous m'avez lancer sur une idée, bien que je n'arrive pas à la concrétisé c déja un début ;),
                              à bon entendeur (y),
                              Sheryo.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.