Найти - Пользователи
Полная версия: listenMulticast + listenMultiple
Начало » Network » listenMulticast + listenMultiple
1
init
Есть следующий код:

class MulticastServerUDP(DatagramProtocol):
    def __init__(self, ip):
        self.ip = ip
    def startProtocol(self):
        self.transport.joinGroup(self.ip)
    def datagramReceived(self, data, address):
        print data
mcast = MulticastServerUDP('229.254.1.23')
reactor.listenMulticast(9000, mcast, listenMultiple=True)
mcast2 = MulticastServerUDP('229.253.1.27')
reactor.listenMulticast(9000, mcast2, listenMultiple=True)

Необходимо слушать на одном порту данные по нескольким мультикаст-адресам. Все работает, но возникла проблема datagramReceived получает все пакеты, независимо от того, к какому адресу был сделан joinGroup. То есть в данном примере все пакеты выводятся по два раза. Как различить, к какой группе принадлежит пакет?
init
Разобрался, если в listenMulticast указать interface=IP, то datagramReceived вызывается только при своих пакетах.
Андрей Светлов
А self.transport.getOutgoingInterface() у тебя разный? joinGroup вешается на интерфейс а не на ip
Андрей Светлов
Собственно говоря, так и оказалось
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB