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 :

chat serveur/client en un programme


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 16
    Points : 11
    Points
    11
    Par défaut chat serveur/client en un programme
    Bonjour,

    J'aimerai programmer un petit chat udp avec pour objectif de ne pas avoir de serveur de redirection...

    c'est à dire un seule et unique programme qui gère un socket d'écoute (non bloquant) et l'envoi de données; donc la saisie clavier ( non bloquante toujours).

    l'idée et belle et bien de pouvoir reçevoir ou envoyer à tout moment.

    j'ai beaucoup bricoler avec les fonction fcntl(), select() poll() mais je tourne en rond et je ne trouve pas de solution.

    ma question est donc : est-ce possible simplement ? et pourriez vous m'aider à comprendre/trouver un algo qui fonctionne


    j'espère avoir été clair

    merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    A mon avis le plus simple sera de créer deux threads dans ton process, un pour le client (saisies clavier et envoie de données sur le réseau), un pour le serveur (réception des données et affichage).

    Si tu veux un seul thread ça marche aussi, effectivement avec poll() ou select(). En gros tu fera une boucle avec un poll() ou un select() sur deux file descriptor : stdin et ta socket serveur. Si réception de données sur stdin, tu lis les données et tu les envoies au serveur. Si réception de données sur la socket, tu lis les données et tu les affiches (ou tu les traites, si tu as des données purement "protocolaires").

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Salut Matafan,

    merci de m'avoir répondu et surtout conforté dans mes idées

    j'ai continuer sur select() et j'ai fini par réussir.

    je crée une socket udp que je bind.

    puis je selet en lecture sur un fd_set initialisé sur mon descripteur socket et sur STDIN_FILENO.

    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
    fd_srv = create_socket_uni_udp_listen(argv[1]);
     
    	do {
    		FD_ZERO(&fd_read);
    		FD_SET( STDIN_FILENO, & fd_read);
    		FD_SET( fd_srv, & fd_read);
     
    		select( fd_srv+1 , & fd_read, NULL, NULL,  0);
     
    		if(FD_ISSET( STDIN_FILENO, &fd_read)){
    				send_to(fd_srv, PORT, argv[1]);
     
    		}
    		if(FD_ISSET(fd_srv, & fd_read)){
     
    			read_from(fd_srv);
    		}
     
    	} while(1);

    Merci d'avance !! je mets résolu !

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

Discussions similaires

  1. [Débutant] Changer la couleur du texte dans un chat entre client et serveur
    Par chafer dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/02/2015, 08h51
  2. chat multithread serveur/client
    Par babacar0 dans le forum C
    Réponses: 18
    Dernier message: 11/09/2012, 13h28
  3. Problème de programme serveur/client
    Par Khnade dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 07/08/2008, 21h22
  4. Programme utilisant RMI ( serveur/client )
    Par Elverion dans le forum Entrée/Sortie
    Réponses: 29
    Dernier message: 21/02/2008, 10h38
  5. Réponses: 5
    Dernier message: 11/03/2006, 16h18

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