本文整理汇总了Python中twisted.internet.reactor.listenMulticast方法的典型用法代码示例。如果您正苦于以下问题:Python reactor.listenMulticast方法的具体用法?Python reactor.listenMulticast怎么用?Python reactor.listenMulticast使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类twisted.internet.reactor
的用法示例。
在下文中一共展示了reactor.listenMulticast方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def main():
p = argparse.ArgumentParser(description='Paradrop daemon running on client')
p.add_argument('--mode', '-m', help='Set the mode to one of [production, local, unittest]',
action='store', type=str, default='production')
p.add_argument('--portal', '-p', help='Set the folder of files for local portal',
action='store', type=str)
p.add_argument('--no-exec', help='Skip execution of configuration commands',
action='store_false', dest='execute')
args = p.parse_args()
# print args
settings.loadSettings(args.mode, [])
update_manager = UpdateManager(reactor)
update_fetcher = UpdateFetcher(update_manager)
WampSession.set_update_fetcher(update_fetcher)
ProcessMonitor.allowedActions = set()
# Start the configuration service as a thread
confd.main.run_thread(execute=args.execute)
airshark_manager = AirsharkManager()
# Globally assign the nexus object so anyone else can access it.
nexus.core = Nexus(update_fetcher, update_manager)
http_server = HttpServer(update_manager, update_fetcher, airshark_manager, args.portal)
setup_http_server(http_server, '0.0.0.0', settings.PORTAL_SERVER_PORT)
reactor.listenMulticast(1900, SsdpResponder(), listenMultiple=True)
reactor.run()
示例2: setUp
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def setUp(self):
self.server = Server()
self.client = Client()
# multicast won't work if we listen over loopback, apparently
self.port1 = reactor.listenMulticast(0, self.server)
self.port2 = reactor.listenMulticast(0, self.client)
self.client.transport.connect(
"127.0.0.1", self.server.transport.getHost().port)
示例3: test_multicast
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def test_multicast(self):
"""
Test that a multicast group can be joined and messages sent to and
received from it.
"""
c = Server()
p = reactor.listenMulticast(0, c)
addr = self.server.transport.getHost()
joined = self.server.transport.joinGroup("225.0.0.250")
def cbJoined(ignored):
d = self.server.packetReceived = Deferred()
c.transport.write(b"hello world", ("225.0.0.250", addr.port))
return d
joined.addCallback(cbJoined)
def cbPacket(ignored):
self.assertEqual(self.server.packets[0][0], b"hello world")
joined.addCallback(cbPacket)
def cleanup(passthrough):
result = maybeDeferred(p.stopListening)
result.addCallback(lambda ign: passthrough)
return result
joined.addCallback(cleanup)
return joined
示例4: test_multiListen
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def test_multiListen(self):
"""
Test that multiple sockets can listen on the same multicast port and
that they both receive multicast messages directed to that address.
"""
firstClient = Server()
firstPort = reactor.listenMulticast(
0, firstClient, listenMultiple=True)
portno = firstPort.getHost().port
secondClient = Server()
secondPort = reactor.listenMulticast(
portno, secondClient, listenMultiple=True)
theGroup = "225.0.0.250"
joined = gatherResults([self.server.transport.joinGroup(theGroup),
firstPort.joinGroup(theGroup),
secondPort.joinGroup(theGroup)])
def serverJoined(ignored):
d1 = firstClient.packetReceived = Deferred()
d2 = secondClient.packetReceived = Deferred()
firstClient.transport.write(b"hello world", (theGroup, portno))
return gatherResults([d1, d2])
joined.addCallback(serverJoined)
def gotPackets(ignored):
self.assertEqual(firstClient.packets[0][0], b"hello world")
self.assertEqual(secondClient.packets[0][0], b"hello world")
joined.addCallback(gotPackets)
def cleanup(passthrough):
result = gatherResults([
maybeDeferred(firstPort.stopListening),
maybeDeferred(secondPort.stopListening)])
result.addCallback(lambda ign: passthrough)
return result
joined.addBoth(cleanup)
return joined
示例5: logout
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def logout(self):
# Announce dead with your uuid and the latest election id
self.log.msg('Announce dead with your uuid and the latest election id')
self._dead()
print 'shutting down ... its been an honour serving you!'
# if __name__ == '__main__':
# import random,os,sys
# try:
# from netifaces import interfaces, ifaddresses, AF_INET
#
# def ip4_addresses():
# ip_list = []
# for interface in interfaces():
# try:
# for link in ifaddresses(interface)[AF_INET]:
# ip_list.append(link['addr'])
# except:
# pass
# return ip_list
# ips = ip4_addresses()
# # print ips
# ip = input('Enter index of ip addr:')
# timeuuid = time_uuid.TimeUUID.with_utcnow()
# book = CommonlogBook(identity=timeuuid, state=0, ip = ips[ip-1])
# reactor.listenMulticast(MCAST_ADDR[1], CommonroomProtocol(book), listenMultiple=True)
# reactor.run()
# except KeyboardInterrupt:
# reactor.stop()
# try:
# sys.exit(0)
# except SystemExit:
# os._exit(0)
示例6: _discover_multicast
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def _discover_multicast():
"""
Local IP discovery protocol via multicast:
- Broadcast 3 ping multicast packet with "ping" in it
- Wait for an answer
- Retrieve the ip address from the returning packet, which is ours
"""
nonce = str(random.randrange(2**64))
p = _LocalNetworkMulticast(nonce)
for attempt in itertools.count():
port = 11000 + random.randint(0, 5000)
try:
mcast = reactor.listenMulticast(port, p)
except CannotListenError:
if attempt >= 10:
raise
continue
else:
break
try:
yield mcast.joinGroup('239.255.255.250', socket.INADDR_ANY)
logging.debug("Sending multicast ping")
for i in xrange(3):
p.transport.write(nonce, ('239.255.255.250', port))
address, = yield p.address_received.get_deferred(5)
finally:
mcast.stopListening()
defer.returnValue(address)
示例7: search_device
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def search_device(self):
"""
Triggers a UPnP device discovery.
The returned deferred will be called with the L{UPnPDevice} that has
been found in the LAN.
@return: A deferred called with the detected L{UPnPDevice} instance.
@rtype: L{twisted.internet.defer.Deferred}
"""
if self._discovery is not None:
raise ValueError('already used')
self._discovery = defer.Deferred()
self._discovery_timeout = reactor.callLater(6, self._on_discovery_timeout)
attempt = 0
mcast = None
while True:
try:
self.mcast = reactor.listenMulticast(1900+attempt, self)
break
except CannotListenError:
attempt = random.randint(0, 500)
# joined multicast group, starting upnp search
self.mcast.joinGroup('239.255.255.250', socket.INADDR_ANY)
self.transport.write(_UPNP_SEARCH_REQUEST, (_UPNP_MCAST, _UPNP_PORT))
self.transport.write(_UPNP_SEARCH_REQUEST, (_UPNP_MCAST, _UPNP_PORT))
self.transport.write(_UPNP_SEARCH_REQUEST, (_UPNP_MCAST, _UPNP_PORT))
return self._discovery
#Private methods
示例8: setup_udp
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def setup_udp(self):
reactor.listenMulticast(self.udp_port, MeshUdpProtocol(self), listenMultiple=True)
示例9: test_multicast
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def test_multicast(self):
"""
Test that a multicast group can be joined and messages sent to and
received from it.
"""
c = Server()
p = reactor.listenMulticast(0, c)
addr = self.server.transport.getHost()
joined = self.server.transport.joinGroup("225.0.0.250")
def cbJoined(ignored):
d = self.server.packetReceived = Deferred()
c.transport.write("hello world", ("225.0.0.250", addr.port))
return d
joined.addCallback(cbJoined)
def cbPacket(ignored):
self.assertEquals(self.server.packets[0][0], "hello world")
joined.addCallback(cbPacket)
def cleanup(passthrough):
result = maybeDeferred(p.stopListening)
result.addCallback(lambda ign: passthrough)
return result
joined.addCallback(cleanup)
return joined
示例10: test_multiListen
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def test_multiListen(self):
"""
Test that multiple sockets can listen on the same multicast port and
that they both receive multicast messages directed to that address.
"""
firstClient = Server()
firstPort = reactor.listenMulticast(
0, firstClient, listenMultiple=True)
portno = firstPort.getHost().port
secondClient = Server()
secondPort = reactor.listenMulticast(
portno, secondClient, listenMultiple=True)
joined = self.server.transport.joinGroup("225.0.0.250")
def serverJoined(ignored):
d1 = firstClient.packetReceived = Deferred()
d2 = secondClient.packetReceived = Deferred()
firstClient.transport.write("hello world", ("225.0.0.250", portno))
return gatherResults([d1, d2])
joined.addCallback(serverJoined)
def gotPackets(ignored):
self.assertEquals(firstClient.packets[0][0], "hello world")
self.assertEquals(secondClient.packets[0][0], "hello world")
joined.addCallback(gotPackets)
def cleanup(passthrough):
result = gatherResults([
maybeDeferred(firstPort.stopListening),
maybeDeferred(secondPort.stopListening)])
result.addCallback(lambda ign: passthrough)
return result
joined.addBoth(cleanup)
return joined
示例11: setUp
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def setUp(self):
self.server = Server()
self.client = Client()
# multicast won't work if we listen over loopback, apparently
self.port1 = reactor.listenMulticast(0, self.server)
self.port2 = reactor.listenMulticast(0, self.client)
reactor.iterate()
reactor.iterate()
self.client.transport.connect("127.0.0.1",
self.server.transport.getHost().port)
示例12: testMulticast
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def testMulticast(self):
c = Server()
p = reactor.listenMulticast(0, c)
self.runUntilSuccess(self.server.transport.joinGroup, "225.0.0.250")
c.transport.write("hello world",
("225.0.0.250",
self.server.transport.getHost().port))
iters = 0
while iters < 100 and len(self.server.packets) == 0:
reactor.iterate(0.05);
iters += 1
self.assertEquals(self.server.packets[0][0], "hello world")
p.stopListening()
示例13: testMultiListen
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def testMultiListen(self):
c = Server()
p = reactor.listenMulticast(0, c, listenMultiple=True)
self.runUntilSuccess(self.server.transport.joinGroup, "225.0.0.250")
portno = p.getHost().port
c2 = Server()
p2 = reactor.listenMulticast(portno, c2, listenMultiple=True)
self.runUntilSuccess(self.server.transport.joinGroup, "225.0.0.250")
c.transport.write("hello world", ("225.0.0.250", portno))
d = defer.Deferred()
reactor.callLater(0.4, d.callback, None, c, c2, p, p2)
return d
示例14: start
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def start(self):
dserver = defer.Deferred()
dclient = defer.Deferred()
try:
self.ssdp = reactor.listenMulticast(SSDP_PORT,
ServerBase(self._node_id,
self._control_uri,
self.iface_send_list,
d=dserver),
listenMultiple=True)
self.ssdp.setTTL(5)
for iface_ in self.iface_send_list:
d = self.ssdp.joinGroup(SSDP_ADDR, interface=iface_)
d.addErrback(lambda x: _log.error("Failed to join multicast group %s:%s, %s", iface_, SSDP_PORT, x))
d.addCallback(lambda x: _log.debug("Joined multicast group %s:%s, %s", iface_, SSDP_PORT, x))
except:
_log.exception("Multicast listen join failed!!")
# Dont start server some one is alerady running locally
# TODO: Do we need this ?
self.port = reactor.listenMulticast(0, ClientBase(d=dclient), interface=self.iface)
_log.debug("SSDP Host: %s" % repr(self.port.getHost()))
# Set ignore port and ips
if self.ssdp and self.ignore_self:
self.ssdp.protocol.set_ignore_list([(x, self.port.getHost().port) for x in self.iface_send_list])
return dserver, dclient
示例15: start
# 需要导入模块: from twisted.internet import reactor [as 别名]
# 或者: from twisted.internet.reactor import listenMulticast [as 别名]
def start(self):
dserver = defer.Deferred()
dclient = defer.Deferred()
try:
self.ssdp = reactor.listenMulticast(SSDP_PORT,
ServerBase(self._node_id,
self._control_uri,
self.iface_send_list,
d=dserver
),
listenMultiple=True)
self.ssdp.setTTL(5)
for iface_ in self.iface_send_list:
d = self.ssdp.joinGroup(SSDP_ADDR, interface=iface_)
d.addErrback(lambda x: _log.error("Failed to join multicast group %s:%s, %s", iface_, SSDP_PORT, x))
d.addCallback(lambda x: _log.debug("Joined multicast group %s:%s, %s", iface_, SSDP_PORT, x))
except:
_log.exception("Multicast listen join failed!!")
# Dont start server some one is alerady running locally
# TODO: Do we need this ?
self.port = reactor.listenMulticast(0, ClientBase(dclient=dclient), interface=self.iface)
_log.debug("SSDP Host: %s" % repr(self.port.getHost()))
# Set ignore port and ips
if self.ssdp and self.ignore_self:
self.ssdp.protocol.set_ignore_list([(x, self.port.getHost().port) for x in self.iface_send_list])
return dserver, dclient