def debug_recv(msg): j = {} for d in msg.data_list: if d == None: logging.error("get nothing for recieved data") sys.exit() j[d] = [] dobj = msg.data_list[d] if isinstance(dobj, list): for obj_c in dobj: if isinstance(obj_c, object): try: j[d].append(json.loads(str(obj_c))) except Exception as e: logging.info(e) j[d].append(obj_c) else: print("================what error !?") j[d].append(obj_c) else: print("================what error !?") j[d].append(json.loads(dobj)) print(json.dumps(j, indent=2)) return j
def get_content(self, data): if isinstance(data, str): logging.info("data is alread string") return (0, data) #原始数据为字符串,protocol 为0, elif isinstance(data, bytes): protocol = bytes_to_int(data[0:4]) # 待后续校验... # content_len = data[4:8] #数据长度 # cs = data[8:12] #校验值 content = data[12:] if protocol == 1: r = (1, content.decode(encoding="utf-8")) return r elif protocol == 2: json_data_len = bytes_to_int(data[12:16]) json_data = data[16:(16 + json_data_len)] stream_data_len = bytes_to_int( data[(16 + json_data_len):(20 + json_data_len)]) stream_data = data[(20 + json_data_len):(20 + json_data_len + stream_data_len)] return (2, (json_data, stream_data)) else: logging.error("protocol not support!") return None else: logging.error("paras err ,not str or bytes but [%s] EXITING .." % type(data)) return None
def ask_user_all(self): logging.info("TEST ask user_all") regs = {"method": "ask_user_all"} bytes_regs = bytes(json.dumps(regs), encoding="utf-8") bytes_send = eotudata().bytedata(1, bytes_regs) self.socket_fd.send(bytes_send) while True: data, server = self.socket_fd.recvfrom(4096) logging.debug('RECV: {!r}'.format(data)) return data
def addr_attrs_set_to_gain(gain, addr_attr_list, addr_type): is_ok = 0 for attr in addr_attr_list: if attr.ipstr != "0.0.0.0": gain[addr_type].append(attr) logging.info("GET %s addr[%s:%d]" % (addr_type, attr.ipstr, attr.port)) is_ok = 1 return gain, is_ok
def register(self, auth_value=0): logging.info("TEST register user [%d]" % self.user_me[0]) regs = { "method": "register", "uid": self.user_me[0], "channel": self.user_me[1], "auth_value": auth_value } bytes_regs = bytes(json.dumps(regs), encoding="utf-8") bytes_send = eotudata().bytedata(1, bytes_regs) self.socket_fd.send(bytes_send) while True: data, server = self.socket_fd.recvfrom(4096) logging.debug('RECV: {!r}'.format(data)) return data
def turn_data_to_uid(self, turndata, to_uid): logging.info("TEST turn_data_to_uid") json_regs = { "method": "turn_data", "to_uid": to_uid, "from_uid": self.user_me } bytes_json_regs = bytes(json.dumps(json_regs), encoding="utf-8") bytes_stream_data = bytes(turndata, encoding="utf-8") bytes_send = eotudata().bytedata(2, bytes_json_regs, bytes_stream_data) self.socket_fd.send(bytes_send) while True: data, server = self.socket_fd.recvfrom(4096) logging.debug('RECV: {!r}'.format(data)) return data
def datagramReceived(self, data, addr): logging.info("CLIENT[%s:%d] visit now! ----------- " % (addr[0], addr[1])) logging.debug("SERVER RECIEVED: %s" % data) protocol, pdata = eotudata().get_content( data) # return (protocol, data) if protocol == 1: content = pdata recv_json = json.loads(content) self.prtone_method_handle(recv_json, addr) elif protocol == 2: try: json_data = json.loads(pdata[0].decode(encoding="utf-8")) logging.debug("turn data is %s" % pdata[1]) self.prttwo_method_handle(json_data, pdata[1], addr, data) except Exception as e: logging.error(e) self.reactor.stop()
def ask_user(self, user_op, try_times=10, pwd=0): logging.info("TEST ask user [%d]" % user_op[0]) regs = { "method": "ask_user", "ask_uid": user_op[0], "channel": user_op[1], "pwd": pwd } bytes_regs = bytes(json.dumps(regs), encoding="utf-8") bytes_send = eotudata().bytedata(1, bytes_regs) self.socket_fd.send(bytes_send) while True: data, server = self.socket_fd.recvfrom(4096) if b"error" in data: try_times = try_times - 1 sleep(3) self.ask_user(user_op) else: logging.debug('RECV: {!r}'.format(data)) return 1, data if try_times == 0: return -1, "not found"
def hello(): logging.info("TWISTED SERVER start on port[%d]\r\n\r\n" %(port))