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/Web Python Discussion :

envoyer un dgram a plusieurs sockets simultanément.


Sujet :

Réseau/Web Python

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut envoyer un dgram a plusieurs sockets simultanément.
    Salut les web python,
    comme le titre l'indique je désire avoir une socket (serveur inverse) émetrice qui envoie un message à plusieurs autres sockets (clientes inverses) réceptrices puissent recevoir simultanément.
    Pour cela j'ai tenter plusieurs approches en faisant des essaies sur loopback (je ne sais si cela est possible) mais la configuration des socket pour cette taches n'est pas choses aisé (setsockopt) et donc
    par
    -broadcast
    -mutlicast
    sur lo.

    Voici un bout de code pour configurer mes socket pour le multicast.
    Après un court appel système:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo route add 127.0.0.0 dev lo
    ou plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo route add 224.0.0.0 dev lo
    Voici le code de configuration de l'émetteur
    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import socket
    from sys import argv, exit
     
    if len(argv) != 3 :
      print "usage %s ip port" % argv[0]
      exit()
     
    sock=socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    sock.bind((argv[1],int(argv[2])))
    sock.setsockopt(socket.SOL_SOCKET,socket.IP_ADD_MEMBERSHIP,argv[1])
    sock.sendto("data",("127.0.0.255",4096))
    Voici le code des récepteurs:
    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import socket
    from sys import argv, exit
     
    if len(argv) != 3 :
      print "usage %s ip port" % argv[0]
      exit()
     
    sock=socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    sock.bind((argv[1],int(argv[2])))
    sock.setsockopt(socket.SOL_SOCKET,socket.IP_ADD_MEMBERSHIP,argv[1])
    while 1 :
      data=sock.recv(4096)
      if data :
        print data
        exit()
    Vous rirai peut-être de mes piètres essaies la chose étant peut-être impossible sur lo ou de la configuration de mes sockets. mais les socket ne sont pas mon domaine de prédilection et je manque de savoir concernant le réseau en termes de broadcast | multicast.

    Tout détail technique concernant le réseau, les sockets pythons, etc... sont la bienvenue.
    Merci d'éclairé mon ignorance grâce a vos précieuse réponses.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    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 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Salut,

    Il n'y a pas beaucoup d'exemples Python sur les multicasts.
    Celui ci fonctionne sous Linux.
    Lire les commentaires pour l’améliorer (et le faire fonctionner sous Windows).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Envoyer un fichier de plusieurs lignes via socket
    Par simondu43 dans le forum Réseau
    Réponses: 3
    Dernier message: 12/05/2011, 21h27
  2. Réponses: 1
    Dernier message: 04/12/2008, 23h42
  3. [Réseau] select() et accept() sur plusieurs sockets
    Par Higestromm dans le forum C++
    Réponses: 13
    Dernier message: 13/10/2008, 09h18
  4. Réponses: 6
    Dernier message: 15/04/2004, 11h04
  5. [KeyEvent] plusieurs touches simultanées enfoncées
    Par gege2mars dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 07/01/2004, 11h44

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