def StartServer(self, port): import socket host = '127.0.0.1' s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((host, port)) while True: try: message, address = s.recvfrom(8192) self.logger.debug("len %d" % len(message)) query = Query() try: query.ParseFromString(message) except: self.logger.debug(traceback.format_exc()) self.RespQuery(1, 0, 0, [], address, s) continue self.logger.debug("get content %s" % query.query) dialogs, terms = self.Search(query.query) for d in dialogs: self.logger.debug("dialog %d weight %f" % (d[0], d[1])) for t in terms: self.logger.debug(" terms %s" % t[0]) self.RespQuery(0, dialogs, terms, address, s) except KeyboardInterrupt: break except: self.logger.error(traceback.format_exc())
def StartServer(self, port): import socket host = "127.0.0.1" s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((host, port)) while True: try: message, address = s.recvfrom(8192) self.logger.debug("len %d" % len(message)) query = Query() cmd = struct.unpack("!H", message[0:2])[0] message = message[2:] self.logger.debug("cmd %d" % cmd) if cmd == 1: try: query.ParseFromString(message) except: self.logger.debug("parse from string error") self.logger.debug(traceback.format_exc()) self.RespGames(1, [], [], address, s) return self.logger.debug("get content %s" % query.query) games, terms = self.Search(query.query) for game in games: self.logger.debug("game weight %f id %d" % (game[0], game[1])) for term in terms: self.logger.debug("term %s weight %f" % (term[0], term[1])) self.RespGames(0, games, terms, address, s) elif cmd == 2: gameId = struct.unpack("!I", message[0:4])[0] self.AddOneGame(gameId) else: self.logger.error("not find cmd %d" % cmd) except: self.logger.debug(traceback.format_exc())