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

Réseau C Discussion :

debloquer mon recv


Sujet :

Réseau C

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut debloquer mon recv
    salut,
    je veut savoir comment je peut rendre mon recv non bloquant si pas de données en reception (donc passer à l'instruction suivante)
    merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    C'est écrit en clair dans la man page :

    MSG_DONTWAIT
    Activer les opérations non-bloquantes. Si l'opération devait bloquer, EAGAIN serait renvoyé (on peut aussi activer ce comportement avec l'option O_NONBLOCK de la fonction F_SETFL de fcntl(2).

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    j'ai lu l'article de man page sur la fonction F_SETFL mais je comprend pas comment l'etuliser?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    Lis la man-page en entier ! Il faut passer MSG_DONTWAIT dans les flags, soit le troisième paramètre de recv().

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    j'ai essayé de mettre sa <<nombre_de_caractere=recv(id_de_la_socket,Buf,sizeof(Buf),MSG_DONTWAIT);>>
    mais il me retourne <<error C2065: 'MSG_DONTWAIT' : undeclared identifier>>
    ?????

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    MSG_DONTWAIT est un flag qui n'est défini que pour les unixoïdes. Sous Windows, il existe d'autres méthodes (également disponibles sous unix) qui permettent d'arriver à la même fin.

  7. #7
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Merci de me répondre mais voila ma situation :

    Je veux connecter un client à un serveur (en fait faire un VPN). Le serveur est destiné à lire les données de sa carte réseau virtuelle, les envoyer via une socket (send). Le client reçoit les données via son socket (recv) et écrit les donnée reçues sur sa carte reseau virtuelle puis il va lire les données de sa carte et l'envoyer via son socket (send) vers le serveur qui de son coté va recevoir les données (recv) et les ecrire sur sa carte réseau virtuelle. Le programme marche bien mais le ping est dans un seul sens du serveur vers le client. Je comprend que mon recv est bloqué j'ai essayer de faire une socket non bloquante mais elle ne marche pas .

    Est ce que vous pouvez me dire comment corriger ce problème.
    Merci d'avance

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ing2009 Voir le message
    salut,
    je veut savoir comment je peut rendre mon recv non bloquant si pas de données en reception (donc passer à l'instruction suivante)
    merci d'avance
    C'est pas une très bonne idée... Il vaut mieux traiter le réception à part dans un thread... ou apprendre à utiliser select()...

Discussions similaires

  1. probleme de recv qui bloque mon programme
    Par ing2009 dans le forum Réseau
    Réponses: 0
    Dernier message: 06/05/2009, 16h23
  2. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 15h00
  3. Impossible de quitter mon application!
    Par Bouillou dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/11/2002, 20h43
  4. Tjours mon pb de date de répertoire
    Par mjacque dans le forum Langage
    Réponses: 5
    Dernier message: 30/08/2002, 09h50
  5. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10

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