コード例 #1
0
    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)
コード例 #2
0
 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失败")
コード例 #3
0
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()
コード例 #4
0
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)
コード例 #5
0
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()
コード例 #6
0
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()
コード例 #7
0
 def parseProtobufMsg(self,data):
     rsp = msg_pb2.Msg();
     rspMsg = rsp.ParseFromString(data);
     log.info("收到服务端应答:");
     log.info(rsp)
     webView.page().runJavaScript("alertIncoming('" + rsp.cmd + "')")
コード例 #8
0
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)