Рубрики
Без рубрики

Как отправить UDP Multicast в Python?

Формирование проблем: как отправлять и получать многоадресные сообщения UDP в Python? -O Фон: Multicast – это концепция распределенных систем для групповой связи по сети (один-ко многим или многозначным). Выбор сети «транспортный уровень», который использует многоадресную рассылку, определяет его тип – например, IP Multicast отправляет многоадресную рассылку по слою IP и … Как отправить UDP Multicast в Python? Читать далее “

Автор оригинала: Chris.

Проблема разработки: Как отправить и получать UDP многоадресные сообщения в Python?

Фон : Многоадресная Концепция распределенных систем для группового общения по сети (от одного ко многим или многим для многих). Выбор сети «транспортный уровень», который использует многоадресную передачу, определяет его тип, например, IP Multicast отправляет многоадресную повторную стою на IP-слое и UDP Multicast Отправляет его на слой протокола пользователя DataGram (UDP), который не предоставляет никаких гарантий доставки, поэтому ненадежный массаж может быть потерян или доставлен из строя. Но это делает UDP Multicast также быстрым, легким и протоколом выбора для многих потоковых сценариев, таких как Netflix, отправляющая UDP Multicast для всех наблюдателей конкретного шоу.

Мы различаемся между отправкой и получения многоадресных сообщений UDP в Python. Для того, чтобы код, представленный в этом руководстве, вам не нужно пользовательские установки какую-либо библиотеку, поскольку нам нужны только розетка Библиотека уже в стандартной библиотеке Python. 😎.

Отправка UDP Multicast.

Чтобы отправить сообщение UDP в группу многоадресной рассылки, прослушивающую данный IP-адрес и порт, перезаписать IP-адрес, порт и сообщение и запустите следующий код:

# SENDER

import socket

group = '224.1.1.1'
port = 5004

# 2-hop restriction in network
ttl = 2

sock = socket.socket(socket.AF_INET,
                     socket.SOCK_DGRAM,
                     socket.IPPROTO_UDP)
sock.setsockopt(socket.IPPROTO_IP,
                socket.IP_MULTICAST_TTL,
                ttl)

sock.sendto(b"hello world", (group, port))

Если вы отправили сообщение, никто не слушает, это даже существует? 😉.

Получение UDP Multicast

Вот как вы можете создать приемник, слушающий IP-адрес и порт, и печатать все полученные сообщения на экран:

# RECEIVER

import socket
import struct

MCAST_GRP = '224.1.1.1'
MCAST_PORT = 5004

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

sock.bind(('', MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)

sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

while True:
    print(sock.recv(10240))

Вы можете настроить обработку сообщений по желанию. Если вы хотите иметь несколько приемников, просто используйте этот точный код, чтобы начать несколько сценариев Python, которые получают одно и то же сообщение, прослушивание одного и того же порта и получая те же пакеты UDP.

Инженеры распределенных систем должны быть мастерами по меньшей мере одного языка программирования. Я знаю из личного опыта в качестве распределенной системы докторской исследователь. Если вы хотите увеличить свои навыки Python, подумайте о том, чтобы присоединиться к моей бесплатной академии электронной почты, которая учит вам все, что вам нужно стать опытным Python Pro! Это бесплатно!

Источники

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.