Python twisted.internet.protocol.DatagramProtocol() Examples
The following are 30
code examples of twisted.internet.protocol.DatagramProtocol().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.internet.protocol
, or try the search function
.
Example #1
Source File: test_udp.py From learn_python3_spider with MIT License | 6 votes |
def test_rebind(self): """ Re-listening with the same L{DatagramProtocol} re-invokes the C{startProtocol} callback. """ server = Server() d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") def cbStarted(ignored, port): return port.stopListening() def cbStopped(ignored): d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") return d.addCallback(cbStarted, p) return d.addCallback(cbStarted, p)
Example #2
Source File: test_socket.py From learn_python3_spider with MIT License | 6 votes |
def test_invalidAddressFamily(self): """ An implementation of L{IReactorSocket.adoptDatagramPort} raises L{UnsupportedAddressFamily} if passed an address family it does not support. """ reactor = self.buildReactor() port = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.addCleanup(port.close) arbitrary = 2 ** 16 + 7 self.assertRaises( UnsupportedAddressFamily, reactor.adoptDatagramPort, port.fileno(), arbitrary, DatagramProtocol())
Example #3
Source File: test_socket.py From learn_python3_spider with MIT License | 6 votes |
def test_invalidDescriptor(self): """ An implementation of L{IReactorSocket.adoptDatagramPort} raises L{socket.error} if passed an integer which is not associated with a socket. """ reactor = self.buildReactor() probe = socket.socket() fileno = probe.fileno() probe.close() exc = self.assertRaises( socket.error, reactor.adoptDatagramPort, fileno, socket.AF_INET, DatagramProtocol()) if platform.isWindows() and _PY3: self.assertEqual(exc.args[0], errno.WSAENOTSOCK) else: self.assertEqual(exc.args[0], errno.EBADF)
Example #4
Source File: ambe_bridge.py From dmr_utils with GNU General Public License v3.0 | 6 votes |
def __init__(self, _parent, _name, _config, _logger, _port): self._parent = _parent self._logger = _logger self._config = _config self._system = _name self._gateways = [(self._parent._gateway, self._parent._gateway_port)] self._ambeRxPort = _port # Port to listen on for AMBE frames to transmit to all peers self._dmrgui = '127.0.0.1' self._sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) self._slot = 2 # "current slot" self.rx = [0, RX_SLOT(1, 0, 0, 0, 1), RX_SLOT(2, 0, 0, 0, 1)] self.tx = [0, TX_SLOT(1, 0, 0, 0, 1), TX_SLOT(2, 0, 0, 0, 1)] class UDP_IMPORT(DatagramProtocol): def __init__(self, callback_function): self.func = callback_function def datagramReceived(self, _data, (_host, _port)): self.func(_data, (_host, _port))
Example #5
Source File: test_udp.py From python-for-android with Apache License 2.0 | 6 votes |
def testRebind(self): # Ensure binding the same DatagramProtocol repeatedly invokes all # the right callbacks. server = Server() d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") def cbStarted(ignored, port): return port.stopListening() def cbStopped(ignored): d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") return d.addCallback(cbStarted, p) return d.addCallback(cbStarted, p)
Example #6
Source File: test_application.py From python-for-android with Apache License 2.0 | 6 votes |
def test_UDP(self): """ Test L{internet.UDPServer} with a random port: starting the service should give it valid port, and stopService should free it so that we can start a server on the same port again. """ if not interfaces.IReactorUDP(reactor, None): raise unittest.SkipTest("This reactor does not support UDP sockets") p = protocol.DatagramProtocol() t = internet.UDPServer(0, p) t.startService() num = t._port.getHost().port self.assertNotEquals(num, 0) def onStop(ignored): t = internet.UDPServer(num, p) t.startService() return t.stopService() return defer.maybeDeferred(t.stopService).addCallback(onStop)
Example #7
Source File: test_udp.py From learn_python3_spider with MIT License | 6 votes |
def test_startStop(self): """ The L{DatagramProtocol}'s C{startProtocol} and C{stopProtocol} methods are called when its transports starts and stops listening, respectively. """ server = Server() d = server.startedDeferred = defer.Deferred() port1 = reactor.listenUDP(0, server, interface="127.0.0.1") def cbStarted(ignored): self.assertEqual(server.started, 1) self.assertEqual(server.stopped, 0) return port1.stopListening() def cbStopped(ignored): self.assertEqual(server.stopped, 1) return d.addCallback(cbStarted).addCallback(cbStopped)
Example #8
Source File: test_udp.py From BitTorrent with GNU General Public License v3.0 | 6 votes |
def testRebind(self): # Ensure binding the same DatagramProtocol repeatedly invokes all # the right callbacks. server = Server() d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") def cbStarted(ignored, port): return port.stopListening() def cbStopped(ignored): d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") return d.addCallback(cbStarted, p) return d.addCallback(cbStarted, p)
Example #9
Source File: test_udp.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_rebind(self): """ Re-listening with the same L{DatagramProtocol} re-invokes the C{startProtocol} callback. """ server = Server() d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") def cbStarted(ignored, port): return port.stopListening() def cbStopped(ignored): d = server.startedDeferred = defer.Deferred() p = reactor.listenUDP(0, server, interface="127.0.0.1") return d.addCallback(cbStarted, p) return d.addCallback(cbStarted, p)
Example #10
Source File: test_udp.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_startStop(self): """ The L{DatagramProtocol}'s C{startProtocol} and C{stopProtocol} methods are called when its transports starts and stops listening, respectively. """ server = Server() d = server.startedDeferred = defer.Deferred() port1 = reactor.listenUDP(0, server, interface="127.0.0.1") def cbStarted(ignored): self.assertEqual(server.started, 1) self.assertEqual(server.stopped, 0) return port1.stopListening() def cbStopped(ignored): self.assertEqual(server.stopped, 1) return d.addCallback(cbStarted).addCallback(cbStopped)
Example #11
Source File: __init__.py From opencanary with BSD 3-Clause "New" or "Revised" License | 6 votes |
def getService(self): """Return service to be run This handles the easy case where the CanaryService class is also the Factory/Datagram class. Subclasses should override this if more intricracy is needed. """ if isinstance(self, Factory): return internet.TCPServer(self.port, self) elif isinstance(self, DatagramProtocol): return internet.UDPServer(self.port, self) err = 'The class %s does not inherit from either Factory or DatagramProtocol.' % ( self.__class__.__name__ ) raise Exception(err)
Example #12
Source File: test_socket.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_invalidAddressFamily(self): """ An implementation of L{IReactorSocket.adoptDatagramPort} raises L{UnsupportedAddressFamily} if passed an address family it does not support. """ reactor = self.buildReactor() port = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.addCleanup(port.close) arbitrary = 2 ** 16 + 7 self.assertRaises( UnsupportedAddressFamily, reactor.adoptDatagramPort, port.fileno(), arbitrary, DatagramProtocol())
Example #13
Source File: test_rawudp.py From learn_python3_spider with MIT License | 5 votes |
def testAddingBadProtos_TooBig2(self): """Adding a protocol with a number >=2**16 raises an exception.""" e = rawudp.RawUDPProtocol() try: e.addProto(2**16+1, protocol.DatagramProtocol()) except TypeError as e: if e.args == ('Added protocol must fit in 16 bits',): pass else: raise else: raise AssertionError('addProto must raise an exception for bad protocols')
Example #14
Source File: test_udp.py From python-for-android with Apache License 2.0 | 5 votes |
def test_interface(self): """ L{IReactorUDP.listenUDP} returns an object providing L{IListeningPort}. """ reactor = self.buildReactor() port = reactor.listenUDP(0, DatagramProtocol()) self.assertTrue(verifyObject(IListeningPort, port))
Example #15
Source File: ipdiscover.py From p2pool-n with GNU General Public License v3.0 | 5 votes |
def get_local_ip(): """ Returns a deferred which will be called with a 2-uple (lan_flag, ip_address) : - lan_flag: - True if it's a local network (RFC1918) - False if it's a WAN address - ip_address is the actual ip address @return: A deferred called with the above defined tuple @rtype: L{twisted.internet.defer.Deferred} """ # first we try a connected udp socket, then via multicast logging.debug("Resolving dns to get udp ip") try: ipaddr = yield reactor.resolve('A.ROOT-SERVERS.NET') except: pass else: udpprot = DatagramProtocol() port = reactor.listenUDP(0, udpprot) udpprot.transport.connect(ipaddr, 7) localip = udpprot.transport.getHost().host port.stopListening() if is_bogus_ip(localip): raise RuntimeError, "Invalid IP address returned" else: defer.returnValue((is_rfc1918_ip(localip), localip)) logging.debug("Multicast ping to retrieve local IP") ipaddr = yield _discover_multicast() defer.returnValue((is_rfc1918_ip(ipaddr), ipaddr))
Example #16
Source File: test_internet.py From python-for-android with Apache License 2.0 | 5 votes |
def testUDP(self): p = reactor.listenUDP(0, protocol.DatagramProtocol()) portNo = p.getHost().port self.assertNotEqual(str(p).find(str(portNo)), -1, "%d not found in %s" % (portNo, p)) return p.stopListening()
Example #17
Source File: test_tuntap.py From learn_python3_spider with MIT License | 5 votes |
def parser(self): """ Get a function for parsing a datagram read from a I{tun} device. @return: A function which accepts a datagram exactly as might be read from a I{tun} device. The datagram is expected to ultimately carry a UDP datagram. When called, it returns a L{list} of L{tuple}s. Each tuple has the UDP application data as the first element and the sender address as the second element. """ datagrams = [] receiver = DatagramProtocol() def capture(*args): datagrams.append(args) receiver.datagramReceived = capture udp = RawUDPProtocol() udp.addProto(12345, receiver) ip = IPProtocol() ip.addProto(17, udp) def parse(data): # TUN devices omit the ethernet framing so we can start parsing # right at the IP layer. ip.datagramReceived(data, False, None, None, None) return datagrams return parse
Example #18
Source File: ssdp_server.py From motion-notify with GNU General Public License v3.0 | 5 votes |
def determine_ip_for_host(host): """Determine local IP address used to communicate with a particular host""" test_sock = DatagramProtocol() test_sock_listener = reactor.listenUDP(0, test_sock) # pylint: disable=no-member test_sock.transport.connect(host, 1900) my_ip = test_sock.transport.getHost().host test_sock_listener.stopListening() return my_ip
Example #19
Source File: rawudp.py From python-for-android with Apache License 2.0 | 5 votes |
def addProto(self, num, proto): if not isinstance(proto, protocol.DatagramProtocol): raise TypeError, 'Added protocol must be an instance of DatagramProtocol' if num < 0: raise TypeError, 'Added protocol must be positive or zero' if num >= 2**16: raise TypeError, 'Added protocol must fit in 16 bits' if num not in self.udpProtos: self.udpProtos[num] = [] self.udpProtos[num].append(proto)
Example #20
Source File: test_rawudp.py From python-for-android with Apache License 2.0 | 5 votes |
def testAddingBadProtos_TooSmall(self): """Adding a protocol with a negative number raises an exception.""" e = rawudp.RawUDPProtocol() try: e.addProto(-1, protocol.DatagramProtocol()) except TypeError, e: if e.args == ('Added protocol must be positive or zero',): pass else: raise
Example #21
Source File: test_rawudp.py From python-for-android with Apache License 2.0 | 5 votes |
def testAddingBadProtos_TooBig(self): """Adding a protocol with a number >=2**16 raises an exception.""" e = rawudp.RawUDPProtocol() try: e.addProto(2**16, protocol.DatagramProtocol()) except TypeError, e: if e.args == ('Added protocol must fit in 16 bits',): pass else: raise
Example #22
Source File: test_rawudp.py From python-for-android with Apache License 2.0 | 5 votes |
def testAddingBadProtos_TooBig2(self): """Adding a protocol with a number >=2**16 raises an exception.""" e = rawudp.RawUDPProtocol() try: e.addProto(2**16+1, protocol.DatagramProtocol()) except TypeError, e: if e.args == ('Added protocol must fit in 16 bits',): pass else: raise
Example #23
Source File: udp.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def __init__(self, bindAddress, proto, maxPacketSize=8192): assert isinstance(proto, protocol.DatagramProtocol) self.state = "disconnected" from twisted.internet import reactor self.bindAddress = bindAddress self._connectedAddr = None self.protocol = proto self.maxPacketSize = maxPacketSize self.logstr = reflect.qual(self.protocol.__class__) + " (UDP)" self.read_op = self.read_op_class(self) self.readbuf = reactor.AllocateReadBuffer(maxPacketSize) self.reactor = reactor
Example #24
Source File: test_application.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def testUDP(self): if not interfaces.IReactorUDP(reactor, None): raise unittest.SkipTest, "This reactor does not support UDP sockets" p = protocol.DatagramProtocol() t = internet.TCPServer(0, p) t.startService() num = t._port.getHost().port def onStop(ignored): t = internet.TCPServer(num, p) t.startService() return t.stopService() return defer.maybeDeferred(t.stopService).addCallback(onStop)
Example #25
Source File: test_internet.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def testUDP(self): p = reactor.listenUDP(0, protocol.DatagramProtocol()) portNo = p.getHost().port self.assertNotEqual(str(p).find(str(portNo)), -1, "%d not found in %s" % (portNo, p)) return p.stopListening()
Example #26
Source File: test_app.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def testListenUnlistenUDP(self): a = app.Application("foo") f = protocol.DatagramProtocol() a.listenUDP(9999, f) a.listenUDP(9998, f) self.assertEquals(len(a.udpPorts), 2) a.unlistenUDP(9999) self.assertEquals(len(a.udpPorts), 1) a.listenUDP(9999, f, interface='127.0.0.1') self.assertEquals(len(a.udpPorts), 2) a.unlistenUDP(9999, '127.0.0.1') self.assertEquals(len(a.udpPorts), 1) a.unlistenUDP(9998) self.assertEquals(len(a.udpPorts), 0)
Example #27
Source File: test_lease_socket_service.py From maas with GNU Affero General Public License v3.0 | 5 votes |
def test_init(self): socket_path = self.patch_socket_path() service = LeaseSocketService(sentinel.service, sentinel.reactor) self.assertIsInstance(service, Service) self.assertIsInstance(service, DatagramProtocol) self.assertIs(service.reactor, sentinel.reactor) self.assertIs(service.client_service, sentinel.service) self.assertEquals(socket_path, service.address)
Example #28
Source File: test_socket.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_invalidDescriptor(self): """ An implementation of L{IReactorSocket.adoptDatagramPort} raises L{socket.error} if passed an integer which is not associated with a socket. """ reactor = self.buildReactor() probe = socket.socket() fileno = probe.fileno() probe.close() exc = self.assertRaises( socket.error, reactor.adoptDatagramPort, fileno, socket.AF_INET, DatagramProtocol()) if platform.isWindows() and _PY3: self.assertEqual(exc.args[0], errno.WSAENOTSOCK) else: self.assertEqual(exc.args[0], errno.EBADF)
Example #29
Source File: test_rawudp.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def testAddingBadProtos_TooBig2(self): """Adding a protocol with a number >=2**16 raises an exception.""" e = rawudp.RawUDPProtocol() try: e.addProto(2**16+1, protocol.DatagramProtocol()) except TypeError as e: if e.args == ('Added protocol must fit in 16 bits',): pass else: raise else: raise AssertionError('addProto must raise an exception for bad protocols')
Example #30
Source File: test_socket.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def test_stopOnlyCloses(self): """ When the L{IListeningPort} returned by L{IReactorSocket.adoptDatagramPort} is stopped using C{stopListening}, the underlying socket is closed but not shutdown. This allows another process which still has a reference to it to continue reading and writing to it. """ reactor = self.buildReactor() portSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.addCleanup(portSocket.close) portSocket.bind(("127.0.0.1", 0)) portSocket.setblocking(False) # The file descriptor is duplicated by adoptDatagramPort port = reactor.adoptDatagramPort( portSocket.fileno(), portSocket.family, DatagramProtocol()) d = port.stopListening() def stopped(ignored): # Should still be possible to recv on portSocket. If # it was shutdown, the exception would be EINVAL instead. exc = self.assertRaises(socket.error, portSocket.recvfrom, 1) if platform.isWindows() and _PY3: self.assertEqual(exc.args[0], errno.WSAEWOULDBLOCK) else: self.assertEqual(exc.args[0], errno.EAGAIN) d.addCallback(stopped) d.addErrback(err, "Failed to read on original port.") needsRunningReactor( reactor, lambda: d.addCallback(lambda ignored: reactor.stop())) reactor.run()