def __init__(self, clientId, port, addr):
self.PORT = port # 26000
self.ADDR = addr # 'ff01::1' #IPV6 Multicast Address
self.clientId = clientId
self.closing = False
addrInfo = socket.getaddrinfo(self.ADDR, None)[0]
self.socket = socket.socket(addrInfo[0], socket.SOCK_DGRAM)
self.socket.setsockopt(IPPROTO_IPV6, socket.IPV6_MULTICAST_HOPS, 1)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind(('', self.PORT))
#Join Multicast grp.
group = socket.inet_pton(addrInfo[0], addrInfo[4][0])
mreq = group + struct.pack('@I', 0)
self.socket.setsockopt(IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)
self.__registeredBusInterfaces = dict()
self.subPatterns = dict()
self.subPatternLock = Lock()
self.requestQueues = dict()
self.inboxLock = Lock()
self.inbox = []
if not os.name == 'nt':
r, w = os.pipe()
self.sigKill = os.fdopen(w, 'w')
self.isKilled = os.fdopen(r, 'r')
评论列表
文章目录