Archive:Multicast

De Centre de Ressources Numériques - Labomedia
Révision de 26 mars 2016 à 11:33 par Serge (discussion | contributions)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Client Subscription

Documentation de pyOSC

Le multicast asynchrone UDP est supporté par OSC.py.

OSCMultiClient supporte le 'multiple unicasting' avec des messages OSC. Cela signifie qu'un message OSC peut être envoyé à plusieurs serveurs, chacun avec leur propre adresse IP. C'est différent de l'envoi d'un message OSC à un multicast spécifique ou une adresse Ip broadcast (qui est aussi supporté, bien sûr).

Si vous souhaitez avoir un OSC-serveur qui contrôle plusieurs clients, et recevoir leurs réponses, il est difficile de dire quelle approche est la meilleure: multiple-unicast, multicast or broadcast. Cela dépend principalement de la topologie de votre réseau. Multicast n'est pas supporté par tous les routeurs, et le broadcasting en général ne fonctionne que dans votre sous-réseau local, mais ces deux méthodes produisent moins de trafic que le réseau multi-unicast.

Pour permettre une configuration dynamique de clients distants qui recevra des réponses à partir du OSCMultiClient, un OSC-serveur qui est lié à un OSCMultiClient supporte l'abonnement client. En envoyant des messages OSC au serveur '/subscribe' et '/unsubscribe', les clients peuvent s'inscrire ou se désinscrire eux-mêmes (ou tout autre client) pour recevoir des réponses de OSCMultiClient.

Documentation de twisted

Multicast permet à un processus de contacter plusieurs hôtes avec un seul paquet, sans connaître l'adresse IP spécifique de l'un des hôtes. Ceci est contraire à Unicast et UDP, où chaque datagramme a une seule adresse IP comme destination.

Les datagrammes de Multicast sont envoyés à un groupe particulier d'adresse Multicast(dans le domaine IPv4 de 224.0.0.0 à 239.255.255.255), avec un même port pour tous . Afin de recevoir des datagrammes Multicast, vous devez joindre le groupe à cette adresse spécifique. Cependant, toute socket UDP peut envoyer à des adresses Multicast. MulticastServer.py

Comme en UDP, en Multicast il n'y a pas de différenciation serveur / client. Notre exemple de serveur est très simple et ressemble beaucoup à une implémentation normale de listenUDP. La principale différence est qu'au lieu de listenUDP, listenMulticast est appelé avec le numéro de port. Le serveur appelle joinGroup pour se joindre à un groupe Multicast.

Un DatagramProtocol qui écoute avec Multicast et a rejoint un groupe peut recevoir des datagrammes Multicast, mais aussi des datagrammes Unicast envoyé directement à son adresse. Le serveur de l'exemple ci-dessous envoie un message comme en Unicast en réponse au message Multicast qu'il a reçu du client. MulticastClient.py

Notez qu' un socket Multicast aura une durée de vie par défaut TTL de 1. Au delà de ce TTL, les datagrammes ne seront plus reçu par un routeur, à moins qu'un autre TTL ne soit configuré avec setTTL. Le transport Multicast comprend d'autres fonctionnalités: setOutgoingInterface et setLoopbackMode - voir IMulticastTransport pour plus d'informations.

Synchrone ou asynchrone

Wikipedia:

Plus de détails pour approfondir:

  • Modèles de Transport de Données sur ATM ATM est une technologie de transfert asynchrone destinée a multiplexer de l'information hétérogène sur une infrastructure commune: donnée, voix, vidéo, etc.

Les scripts utilisent des transferts asynchrone. Il peut y avoir pertes de données, mais ce n'est pas grave puisque tout est envoyé toutes les 0.015 secondes, ce sera transparent dans Blender à 60 fps.

TODO: Approfondir pourquoi async ?