def __init__(self): self.client = socket(AF_INET, SOCK_STREAM) self.client.connect(self.ADDR) while True: data = input('>') # if not data: # break # python3传递的是bytes,所以要编码 # self.client.send(data.encode('utf8')) xmlData = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Transfer attribute=\"Connect\">\n<outer to=\"15980882896\"/>\n<ext id=\"8109\"/>\n</Transfer>" xmlData = "200" #b'\x00\x00\x00\x07\x08\x02\x12\x03200' #b'\x08\x01\x12\x03200' # xmlData.encode(); msg = msg_pb2.Msg() msg.id = "1" msg.cmd = xmlData # self.client.sendall(msg.SerializeToString()) self.client.sendall(msg.SerializeToString()) print('send data ' + xmlData) print('发送信息到%s:%s' % (self.HOST, data)) if data.upper() == "QUIT": break data = self.client.recv(self.BUFSIZ) if not data: break rsp = msg_pb2.Msg() rspMsg = rsp.ParseFromString(data) print(rsp)
def send(self,outerTo,extId,omServer): try: # outerTo="";#外呼号码 # extId="";#分机号 xmlData="<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Transfer attribute=\"Connect\">\n<outer to=\""+outerTo+"\"/>\n<ext id=\""+extId+"\"/>\n</Transfer>"; # trunk = self.getTrunk(extId); # xmlData = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Transfer attribute=\"Connect\">\n" \ # "<outer to=\"" + outerTo + "\"/>\n<ext id=\"" + extId + "\"/>\n<trunk id=\"" + trunk + "\"/>\n</Transfer>"; # xmlData="15980882896" #xmlData.encode(); msg=msg_pb2.Msg(); msg.id="1"; msg.cmd=xmlData; #add by loemkie 新增拨号服务器对应机构号 msg.omServer=omServer; # self.client.sendall(msg.SerializeToString()) self.client.sendall(msg.SerializeToString()) # print('send data ' + xmlData) log.info('send data ' + xmlData) #time.sleep(1) # 如果想验证长时间没发数据,SOCKET连接会不会断开,则可以设置时间长一点 # data = self.client.recv(BUFSIZE) # self.parseProtobufMsg(data); except: info = sys.exc_info() # print(info[0], ":", info[1], ":", info[2]) # traceback.print_tb(info[2], limit=1, file=sys.stdout) # print("发送消息至 OM Server失败") log.info("连接OM Server失败")
def echo_client(host, port): client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((host, port)) msg = msg_pb2.Msg() msg.user = "******" msg.text = "hello world" fmt = 'i' + str(msg.ByteSize()) + 's' data = struct.pack(fmt, msg.ByteSize(), msg.SerializeToString()) client_socket.send(data) data = client_socket.recv(1024) # read message size size = int.from_bytes(data[:4], byteorder='little') # read message data = data[4:] recv_msg = msg_pb2.Msg() recv_msg.ParseFromString(data[:size]) print("echo %s: \n\tname: %s\n\tmessage: %s\n" % (host + ":" + str(port), msg.user, msg.text)) client_socket.close()
def send_pb(socket, sender, msg, flags=0, protocol=-1): """sends a protocol buffer of the message and logs it.""" # Compose message with sender, content, and timestamp. """ pb_data = msg_pb2.Msg() pb_data.timestamp = datetime.fromtimestamp( time.time()).strftime('%Y-%m-%d %H:%M:%S') pb_data.sender = sender pb_data.content = msg # Write information to a log (redis) msg_logs.rpush( 'chat_logs', '[%s] %s: %s' % (pb_data.timestamp, pb_data.sender, pb_data.content)) # Serialize message return socket.send(pb_data.SerializeToString(), flags=flags)
def echo_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = socket.gethostname() port = 8080 server_socket.bind((host, port)) print("server start: %s:%d" % (host, port)) server_socket.listen(128) while True: client_socket, addr = server_socket.accept() data = client_socket.recv(1024) # read message size size = int.from_bytes(data[:4], byteorder='little') # read message data = data[4:] msg = msg_pb2.Msg() msg.ParseFromString(data[:size]) print("echo %s: \n\tname: %s\n\tmessage: %s\n" % (addr, msg.user, msg.text)) data = struct.pack('i' + str(size) + 's', size, msg.SerializeToString()) client_socket.send(data) client_socket.close()
import msg_pb2 PB_FILE_PATH = 'msg.pb' JSON_FILE_PATH = 'msg.json' msg = msg_pb2.Msg() msg.head.cid = 123 msg.ret = 321 msg.Extensions[msg_pb2.id] = 111 msg.Extensions[msg_pb2.mod_req].b = True # 以二进制形式保存 f = open(PB_FILE_PATH, "wb") f.write(msg.SerializeToString()) f.close() # 读base base = msg_pb2.Msg() f = open(PB_FILE_PATH, "rb") base.ParseFromString(f.read()) f.close() from google.protobuf.json_format import MessageToJson # 关键 json = MessageToJson(base) print(json) # 保存json f = open(JSON_FILE_PATH, "w") f.write(json) f.close()
def parseProtobufMsg(self,data): rsp = msg_pb2.Msg(); rspMsg = rsp.ParseFromString(data); log.info("收到服务端应答:"); log.info(rsp) webView.page().runJavaScript("alertIncoming('" + rsp.cmd + "')")
def recv_pb(socket, flags=0, protocol=-1): """receives a protocol buffer of the message.""" # Parse message pb_data = msg_pb2.Msg() pb_data.ParseFromString(socket.recv(flags)) return '[%s] %s: %s' % (pb_data.timestamp, pb_data.sender, pb_data.content)