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

C# Discussion :

Plusieurs écoutes UDP sur le même port


Sujet :

C#

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Points : 60
    Points
    60
    Par défaut Plusieurs écoutes UDP sur le même port
    Bonjour,

    est-il possible d'effectuer plusieurs écoute UDP sur le même port d'une machine?

    Si oui comment procéder? Après diverses recherches je ne parviens pas à trouver la solution.

    Merci d'avance pour votre aide.

  2. #2
    Membre actif
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Points : 233
    Points
    233
    Par défaut
    J'espère que tu trouvera ce que tu cherche par ici :
    http://bytes.com/groups/net-c/233554...apps-same-time

  3. #3
    Membre habitué Avatar de Rapha222
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 128
    Points : 168
    Points
    168
    Par défaut
    J'ai une application écrite en C# et qui envoi des paquets broadcast en UDP et je n'ai jamais eu de probleme pour lancer deux instances en écoute sur le même port sur Linux (avec Mono) par contre, impossible sur OS X (Mono) ou Windows (.NET).
    Sur linux, le message est repeté sur les deux client, il faut donc pouvoir identifier les loopback, pour ça j'utilise un Guid.
    D'après le site de emmr.rida, ça semble possible sur Windows, ça doit se jouer au niveau des SocketFlags ou/et des SocketOptions, mais je n'ai pas le temps d'essayer.
    Puisque je lance uniquement les deux client pour faire des tests de dev et que je programme sur linux, ça ne cause pas vraiment de probleme, mais si il existe une solution pour les deux autres OS du marché, je suis aussi intéressé, ca m'éviterai d'avoir à démarrer une deuxième machine pour faire mes tests ...
    Fedora 12 x64 (laptop) - OpenSuSe 11.2 (desktop)
    Hébergeur d'images et de fichiers (< 75Mio) gratuit et sans pub

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    normalement, en C++ (je suppose qu'en C# c pareil mais ca fait longtemps que j'ai pas touché aux sockets), tu peux lire le contenu de la socket sans la vider

    Donc, cela est surement faisable en C#, suffit de trouver la bonne propriété
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Membre actif
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Points : 233
    Points
    233
    Par défaut
    Oui, Socket.Receive avec le drapeau SocketFlags.Peek permet de lire le buffer sans y toucher. Mais si plusieurs processus peek sans passer par le mode normal de Receive ne vas pas causer un étranglement du buffer et des pertes de messages?!

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 124
    Points : 60
    Points
    60
    Par défaut
    J'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UdpClient listener = new UdpClient();
    listener.Client.SetSocketOption(SocketOptionLevel.Socket,
    SocketOptionName.ReuseAddress, 1);
    groupEP = new IPEndPoint(IPAddress.Any, listenPort);
    listener.Client.Bind(groupEP);
    Cela fonctionne pas mal

    Merci à tous pour vos réponses !

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

Discussions similaires

  1. Plusieurs clients SIP sur un même poste
    Par maverick56 dans le forum Multimédia
    Réponses: 3
    Dernier message: 05/02/2010, 11h03
  2. Réponses: 4
    Dernier message: 02/05/2008, 09h23
  3. Plusieurs Mingw/gcc sur le même OS
    Par flreims dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 19/04/2007, 11h36
  4. Réponses: 2
    Dernier message: 29/11/2006, 11h52
  5. envoi de données sur un même port
    Par manaboko dans le forum Développement
    Réponses: 7
    Dernier message: 05/10/2005, 15h53

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