GNU/Linux >> Tutoriels Linux >  >> Linux

Comment diffuser un message en utilisant les sockets UDP localement ?

Le serveur ne doit pas être lié à une adresse que vous obtenez de getaddrinfo , à la place, il devrait être lié à 127.255.255.255 (pour l'interface de bouclage).

Pour un exemple prêt à l'emploi de serveur/client de diffusion, voir http://www.ccplusplus.com/2011/09/udp-broadcast-client-server-example.html


Les sockets de domaine Unix ne prennent pas en charge la multi-/diffusion.

Vous pouvez diffuser sur l'interface locale 127.0.0.1.


Bien que la question d'origine ne le dise pas explicitement, je pense que le demandeur d'origine voulait "diffuser" vers plusieurs applications exécutées sur la même instance de système d'exploitation (même ordinateur pour les anciens).

Ceci est soutenu par l'utilisation de 'SO_REUSEADDR' dans l'exemple d'écouteur, et les commentaires de suivi de Yuvi, et enfin une suggestion d'utiliser la multidiffusion IP.

La question initiale doit être clarifiée.

Je pense que la distribution de paquets avec plusieurs classeurs sur un seul port UDP varie d'un système d'exploitation à l'autre lors de l'utilisation de SO_REUSEADDR.Mon expérience sur Windows récent, c'est qu'un seul "classeur" reçoit exclusivement tous les paquets jusqu'à ce qu'il libère sa liaison, moment auquel un autre liant est choisi et présenté tous les paquets reçus, jusqu'à ce qu'elle libère, et ainsi de suite...

Cela diffère apparemment des noyaux Linux récents, comme expliqué dans ce lien :https://stackoverflow.com/a/14388707/86375Cette page semble affirmer que Linux recevra des paquets entre plusieurs classeurs.

Le résultat final, si vous espérez envoyer à plusieurs en utilisant un seul datagramme envoyé comme l'a fait l'affiche originale, et que vous essayez d'utiliser la monodiffusion IP, pas la multidiffusion IP, vous risquez d'être déçu. (Mon expérience et le lien ci-dessus montrent que vous pouvez effectuer une liaison multiple, mais cela n'implique pas la livraison multiple des datagrammes reçus, ni sur Linux ni sur Windows)

L'affiche d'origine aurait dû essayer d'utiliser la multidiffusion.


Linux
  1. CentOS / RHEL 6 :Comment configurer le référentiel yum à l'aide d'un DVD monté localement

  2. Quelle quantité de Linux dois-je apprendre pour déployer des sites Web à l'aide de LAMP ?

  3. Comment reprendre localement une session démarrée à distance à l'aide de xrdp ?

  4. Comment supprimer un fichier sans utiliser rm ?

  5. Dois-je arrêter d'utiliser Ifconfig ?

Comment partager des fichiers localement sur Linux en utilisant NitroShare

Comment monter Dropbox localement à l'aide de Rclone sous Linux

Comment monter Google Drive localement à l'aide de Rclone sous Linux

Comment envoyer un e-mail localement à l'aide de l'invite de commande

Comment :une introduction à l'utilisation de Git

Comment se connecter à MySQL en utilisant PHP