Задать вопрос
blo
@blo
инженер-программист

Python multicast receiver — duplicate packets?

Есть скрипт, который открывает сокет и читает из него мультикаст (взято отсюда)



import socket
import struct

MCAST_GRP = '224.1.1.1'
MCAST_PORT = 1234

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)




все отлично пока я параллельно не запускаю такой же скрипт на другую мультикаст группу, но порты совпадают, например

rtp://224.1.1.1:1234

rtp://224.1.1.2:1234

После запуска второго скрипта начинается каша — первый скрипт видит пакеты для второго, а второй для первого.



Пробовал сделать как в mcast.py, результат аналогичный.



Почему так происходит и как это вылечить?



UPD. Решилось подстановкой в sock.bind адреса мультикаст группы

-sock.bind(('', MCAST_PORT))
+sock.bind((MCAST_GRP, MCAST_PORT))
  • Вопрос задан
  • 3075 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы