1

I try get a uPNP / ssdp Discovery working on IPv6

The IPv4 discovery works fine:

        uUDP_IP     = u'239.255.255.250'
        iUDP_PORT   = 1900
        uMessage = u'M-SEARCH * HTTP/1.1\r\nHOST: %s:%d\r\nMAN: "ssdp:discover"\r\nMX: 5\r\nST: %s\r\n\r\n' % (uUDP_IP, iUDP_PORT, "ssdp:all")

        oSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        oSocket.settimeout(10)
        oSocket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
        oSocket.sendto(uMessage, (uUDP_IP, iUDP_PORT))

but my IPv6 version doesn't work

        uUDP_IP = u'ff02::f'
        iUDP_PORT = 1900
        uMessage = u'M-SEARCH * HTTP/1.1\r\nHOST: %s:%d\r\nMAN: "ssdp:discover"\r\nMX: 5\r\nST: %s\r\n\r\n' % (uUDP_IP, iUDP_PORT, "ssdp:all")

        oSocket = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
        oSocket.settimeout(10)
        oSocket.setsockopt(socket.IPPROTO_IPV6, socket.IP_MULTICAST_TTL, 2)
        oSocket.sendto(uMessage, (uUDP_IP, iUDP_PORT))

Help would be appreciated!

  • Found the solution: uMessage = u'M-SEARCH * HTTP/1.1\r\nHOST: [%s]:%d\r\nMAN: "ssdp:discover"\r\nMX: 2\r\nST: %s\r\n\r\n' % (uUDP_IP, iUDP_PORT, self.uST) is the trick: The IPV6 IPAdress in the message must be in brackets – Carsten Thielepape Mar 15 '19 at 18:37

0 Answers0