Python >> Tutoriel Python >  >> Python

Comment envoyer des messages UDP en Python ?

Formulation du problème : Comment envoyer et recevoir des messages UDP en Python ?

Contexte :La couche réseau UDP (User Datagram Protocol) permet d'envoyer des messages sans fournir de garantie de délivrabilité. UDP n'est pas fiable - les messages peuvent être perdus ou livrés dans le désordre. Mais cela rend UDP également rapide, léger et le protocole de choix pour de nombreux scénarios de streaming tels que Netflix envoyant des messages UDP à tous les spectateurs d'une émission spécifique.

Nous différencions l'envoi et la réception de messages UDP en Python. Pour le code présenté dans ce tutoriel, vous n'avez pas besoin d'installer de bibliothèque personnalisée car nous n'avons besoin que du socket bibliothèque qui est déjà dans la bibliothèque standard de Python. ?

Envoi d'un message UDP

Pour envoyer un message UDP à un programme écoutant sur une adresse IP et un PORT donnés, remplacez l'adresse IP, le PORT et le MESSAGE et exécutez le code suivant :

# SENDER

import socket

ip = "127.0.0.1"
port = 5000
msg = b"hello world"

print(f'Sending {msg} to {ip}:{port}')

sock = socket.socket(socket.AF_INET,
                     socket.SOCK_DGRAM)
sock.sendto(msg, (ip, port))

Maintenant, vous pouvez vous demander :si vous envoyez un message que personne n'écoute, existe-t-il même ? 😉

Réception d'un message UDP

Voici comment vous pouvez créer un récepteur écoutant l'adresse IP et le PORT et affichant tous les messages reçus à l'écran :

# RECEIVER

import socket

ip = "127.0.0.1"
port = 5000

sock = socket.socket(socket.AF_INET,
                     socket.SOCK_DGRAM)
sock.bind((ip, port))

print(f'Start listening to {ip}:{port}')

while True:
    data, addr = sock.recvfrom(1024) # buffer
    print(f"received message: {data}")

Vous pouvez personnaliser le traitement des messages comme vous le souhaitez.

Les ingénieurs en systèmes distribués doivent maîtriser au moins un langage de programmation. Je le sais par expérience personnelle en tant que chercheur doctorant sur les systèmes distribués. Si vous souhaitez améliorer vos compétences en Python, envisagez de rejoindre mon académie de messagerie gratuite qui vous apprendra tout ce dont vous avez besoin pour devenir un pro Python qualifié ! C'est gratuit !

Sources

  • https://wiki.python.org/moin/UdpCommunication
  • https://en.wikipedia.org/wiki/User_Datagram_Protocol