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 :

Envoi et réception simultanés


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut Envoi et réception simultanés
    Bonjour,

    Voilà je me pose une question simple :

    Je dispose d'une application multi-threads. J'ai un certain nombre de sockets ouvertes, mais je voudrais savoir d'il est possible pour 2 threads d'émettre et de recevoir sur la même socket en même temps ?

    Autrement dit, je dois utiliser un mutex par socket, ou bien 2 (un pour la réception, un pour l'émission) ?

    Merci d'avance...

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    La premiere chose à faire serait de faire un petit programme test qui essaie de communiquer sur un socket à travers deux threads differents.

    Normalement, il ne doit pas y avoir de probleme.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    En fait la question c'est "est ce que le socket est un object thread safe" D'après les quelques traces que j'ai vues sur différents forum, il semble que oui mais je ne sait pas (je n'ai pas trouvé ) ce que dit Microsoft dans le MSDN

    Citation Envoyé par darrylsite Voir le message
    La premiere chose à faire serait de faire un petit programme test qui essaie de communiquer sur un socket à travers deux threads differents.Normalement, il ne doit pas y avoir de probleme.
    Ce n'est pas facile de faire un programme qui PROUVE extérieurement qu'un objet est thread safe ou qu'il ne l'est pas. Seule la doc de l'objet peut le dire.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut
    Petite précision, dans mon cas il s'agit de sockets bluetooth (stack microsoft). Mais a priori les sockets ont un niveau d'abstraction suffisant pour qu'on se moque du protocole... non ?

    Du coup il est aussi possible qu'il n'y ait besoin d'aucun mutex, même si plusieurs threads sont bloqués en réception sur la même socket ??

    Sinon mes recherches google n'ont pas donné grand-chose... avant que je n'utilise les mots-clés "socket thread safe", effectivement. Bien vu. Je continue les recherches et je donne mes résultats !

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par madmox Voir le message
    Petite précision, dans mon cas il s'agit de sockets bluetooth (stack microsoft). Mais a priori les sockets ont un niveau d'abstraction suffisant pour qu'on se moque du protocole... non ?
    Je dirais oui

    Citation Envoyé par madmox Voir le message
    Du coup il est aussi possible qu'il n'y ait besoin d'aucun mutex, même si plusieurs threads sont bloqués en réception sur la même socket ??
    C'est possible mais cela me pose un problème.
    Si plusieurs thread sont en attente de lecture sur un socket et qu'il arrive quelquechose à lire, je ne sais pas quel thread va être débloqué. Peut être même que tous les thread seront débloqués , un seul aura quelque chose à lire et les autres auront 0 octets à lire. C'est dommage de débloquer des thread pour ne rien faire. et en plus quel intérêt d'avoir plusieurs thread en attente de réception sur un socket ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par madmox Voir le message
    Bonjour,

    Voilà je me pose une question simple :

    Je dispose d'une application multi-threads. J'ai un certain nombre de sockets ouvertes, mais je voudrais savoir d'il est possible pour 2 threads d'émettre et de recevoir sur la même socket en même temps ?
    Un socket permet a deux entités de communiquer avec un respect de l'ordre dans lequel sont transmis et recus les messages.

    Je ne pense pas qu'il y ait une mécanique qui empêche deux threads d'utiliser la même socket. Par contre, tout l'intérêt de la socket est perdu:
    • thread 1 : envoi un message et attend une réponse
    • thread 2 : attend un message

    thread2 recevra autre chose que le message attendu et thread1 ne recevra pas sa réponse.
    On peut complexifer en mettant dans des en-tête de message le numéro de thread correspondant mais associer une socket à chaque threads me parait beaucoup plus simple.

    Autrement dit, je dois utiliser un mutex par socket, ou bien 2 (un pour la réception, un pour l'émission) ?
    Un socket est un objet système et l'OS sérialise déjà les opérations sur cet objet, est-il utile d'en rajouter?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut
    quel intérêt d'avoir plusieurs thread en attente de réception sur un socket ?
    Certes, ce n'est pas très malin, c'était juste pour l'exemple...

    associer une socket à chaque threads me parait beaucoup plus simple
    Ca me pose un problème : le nombre de sockets ouvrables en bluetooth est fortement limité... quelque chose comme 2 ou 3 sous Windows CE 5.0, environnement que j'utilise pour mon application.

    J'utiliserai donc une seule socket par client. Le mécanisme de mon application fait qu'un thread est en attente de message et envoie une réponse quand il reçoit une demande, et un autre se charge d'envoyer des mises à jour. Il ne devrait donc pas y avoir besoin de synchronisation...

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par madmox Voir le message
    ....
    J'utiliserai donc une seule socket par client. Le mécanisme de mon application fait qu'un thread est en attente de message et envoie une réponse quand il reçoit une demande, et un autre se charge d'envoyer des mises à jour. Il ne devrait donc pas y avoir besoin de synchronisation...
    A mon sens, les questions de synchronisation ne portent pas sur la "socket" mais sur les échanges entre les 'entités' qui, a chaque extrémité, vont l'utiliser pour dialoguer.
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. [Audio] Envoi et réception de flux audio avec Java Sound
    Par djanat22 dans le forum Multimédia
    Réponses: 3
    Dernier message: 24/01/2014, 10h38
  2. Envoi et réception de mails avec le framework 2.0
    Par abdallah2007 dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/06/2008, 17h35
  3. Envoi et réception de données : Communication Temps Réel
    Par mehdi_862000 dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 26/05/2008, 14h14
  4. tutoriel de l'envoi et réception des emails
    Par ouadie99 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/12/2006, 23h48
  5. Réponses: 8
    Dernier message: 20/03/2006, 14h01

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