Hi,

I am implementing a code through which i have to get devices connected to all network interfaces on my machine and list them .

For this, i am first getting the ip of all network interfaces and then sending m-search command on them.

After 2.5 seconds port is stopped to listen.

But it is giving me some assertion error. (I am connected to 2 interfaces -ethernet and wifi)

`Code:`

    class Base(DatagramProtocol):
        """ Class to send M-SEARCH message to devices in network and receive datagram
            packets from them
        """
        SSDP_ADDR = "239.255.255.250"
        SSDP_PORT = 1900
        MS = "M-SEARCH * HTTP/1.1\r\nHOST: {}:{}\r\nMAN: 'ssdp:discover'\r\nMX: 2\r\nST: ssdp:all\r\n\r\n".format(SSDP_ADDR, SSDP_PORT)
    
    def sendMsearch(self):
        """ Sending M-SEARCH message
        """
        ports = []
        for address in self.addresses:
            ports.append(reactor.listenUDP(0, self, interface=address))
            
        for port in ports:
            for num in range(4):
                port.write(Base.MS, (Base.SSDP_ADDR,Base.SSDP_PORT))
            reactor.callLater(2.5, self.stopMsearch, port) # MX + a wait margin


    def stopMsearch(self, port):
        """ Stop listening on port
        """
        port.stopListening()


`Error:`
    Traceback (most recent call last):
 File "work\find_devices.py", line 56, in sendMsearch
ports.append(reactor.listenUDP(0, self, interface=address))
 File "C:\Python27\lib\site-packages\twisted\internet\posixbase.py", line 374, in listenUDP
p.startListening()
 File "C:\Python27\lib\site-packages\twisted\internet\udp.py", line 172, in startListening
self._connectToProtocol()
 File "C:\Python27\lib\site-packages\twisted\internet\udp.py", line 210, in _connectToProtocol
self.protocol.makeConnection(self)
 File "C:\Python27\lib\site-packages\twisted\internet\protocol.py", line 709, in makeConnection
assert self.transport == None
AssertionError



This code worked:

def sendMsearch(self):
        """ Sending M-SEARCH message
        """
        address = socket.gethostbyname(socket.gethostbyname())
        port = reactor.listenUDP(0, self, interface=address)
        for num in range(4):
                port.write(Base.MS, (Base.SSDP_ADDR,Base.SSDP_PORT))
        reactor.callLater(2.5, self.stopMsearch, port) # MX + a wait margin




Please tell what's wrong in code mentioned in the start of this mail and how to correct this.

I have also posted this code on stackoverflow , but didn't get any response
http://stackoverflow.com/questions/24178580/send-m-search-packets-on-all-network-interfaces-using-twisted-module-in-python