def run(self): #执行监听 capture = pcapy.open_live(self.__device, 65536, 1, 0) #将网卡设置为混杂模式 if len(self.__filter) != 0: #有过滤条件 try: #设置过滤规则,并检测输入的过滤规则是否有误 capture.setfilter(self.__filter) except: self.__showErrorSignal.emit() #向主线程发送过滤规则有误信号 return while self.__runTag: #循环直至runTag为0 (head, data) = capture.next() #捕获数据包 if head != None: resolveObj = Resolve() res = resolveObj.resolve(head, data) #交由解析对象解析数据包 if res != None: res["originalHex"] = data.hex() self.__resList.append(res) self.__getDataSignal.emit() #通知主界面此时可以获取数据
def install_actions(self, arg, mode='recur', force=False, forceall=False): """ Create a list of actions which are required for installing, which includes updating, a package (without actually doing anything). The first argument may be any of: * the KVS key, i.e. the egg filename * a requirement object (enstaller.resolve.Req) * the requirement as a string """ req = req_from_anything(arg) # resolve the list of eggs that need to be installed self._connect() eggs = Resolve(self.remote, self.verbose).install_sequence(req, mode) if eggs is None: raise EnpkgError("No egg found for requirement '%s'." % req) if not forceall: # remove already installed eggs from egg list rm = lambda eggs: [e for e in eggs if self.find(e) is None] if force: eggs = rm(eggs[:-1]) + [eggs[-1]] else: eggs = rm(eggs) res = [] for egg in eggs: res.append(('fetch_%d' % bool(forceall or force), egg)) if not self.hook: # remove packages with the same name (from first egg collection # only, in reverse install order) for egg in reversed(eggs): name = split_eggname(egg)[0].lower() index = dict(self.ec.collections[0].query(name=name)) assert len(index) < 2 if len(index) == 1: res.append(('remove', index.keys()[0])) for egg in eggs: res.append(('install', egg)) return res