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

Autres éditeurs Discussion :

sockets : tester la présence de donner à recevoir


Sujet :

Autres éditeurs

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 29
    Points
    29
    Par défaut sockets : tester la présence de donner à recevoir
    bonjour,
    j'utilise la librairie socket
    ayant fait un petit peu de MPI, je sais qu'il est possible, avec MPI, de tester la présence d'un message reçu.
    est-ce possible avec des sockets?
    je voudrais faire qque chose comme :

    si j'ai recu des données alors
    > recevoir les données
    > traiter les données
    sinon
    > faire autre chose
    finsi

    j'ai peut être mal regardé mais je n'est rien trouvé de tel dans socket.h

    merci

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Tu as la fonction recv qui est bloquante et qui réagit dès qu'un flux de données est reçu. Sous quel système travailles-tu ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    merci,
    je suis sous linux - suse 10.1
    j'ai bien vu la fonction recv, mais puisqu'elle est bloquante ca colle pas, non?
    en fait je voudrais faire un serveur qui peut recevoir des données et les traiter mais en l'absence de données, le serveur a du boulot à faire.
    sinon je peux toujours multi-threader le tout mais j'ai la flemme.

  4. #4
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Une solution est de dupliquer le processus : pendant que l'un écoute le port, l'autre fait ce qu'il a à faire.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    ouais t'as raison ca devrait etre bon.
    je vais le tenter comme ca

    merci

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    non la vraie solution (ATTENTION : sous *n*x. PAs le même mécansime sous Windows (threads)), est de passer le socket en mode non-bloquant, et d'enregistrer une routine à appeler lors de la réception d'un SIGIO. Il faudra de plus, pour toute sécurité, ajouter un "poll" pour vérifier que ce n'est pas un signal fantôme, un changement d'état du socket, et autre....

    Si tu veux, il y a plusieurs exemples dans la FAQ et les sources C, et sur le forum C..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    ah, merci
    je vais voir ça.

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par souviron34
    non la vraie solution (ATTENTION : sous *n*x.

    Pourquoi ne pas plutôt utiliser select (méthode qui a l'avantage d'être windows/unix friendly) ? C'est tellement plus simple (avis personnel, je n'ai jamais utilisé ta solution)
    Je ne répondrai à aucune question technique en privé

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    ben c'est vrai que j'ai répondu un peu vite, mais il utilise MPI. Il doit donc être sur une assez grosse appli scientifique.

    Par contre, effectivement, il ne dit pas si ce qu'il fait doit être synchrone ou non....

    Un petit input, le PO ??

    Millie a raison si tu dois être synchrone, il faut utiliser select. Si cela est asynchrone, la manière que je préconise est la manière des sockets "traditonnels" *n*x.

    [EDIT]
    et en relisant, c'est effectivement select qui devrait être bon dans ton cas, car MPI a son propre mécanisme et a besoin d'une synchronicité...
    [/EDIT]
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. tester la présence des parametres
    Par Delphi-ne dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2005, 20h51
  2. VBA - Tester la présence d'un composant
    Par n1portki dans le forum Général VBA
    Réponses: 1
    Dernier message: 20/09/2005, 05h18
  3. Comment tester la présence de machine ?
    Par bluesnr dans le forum Web & réseau
    Réponses: 9
    Dernier message: 22/04/2005, 17h20
  4. [JSP]Tester la présence d'un attribut
    Par StagiaireEnGalère dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 08/02/2005, 09h35
  5. Réponses: 11
    Dernier message: 02/04/2004, 18h33

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