import socket
import binascii
import struct
from SensingMonitoring_pb2 import Command, CommandNames
if __name__ == "__main__":
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("192.168.1.100", 22295))
command = Command()
command.COMMANDID = 45678
command.COMMANDNAME = CommandNames.Value('AuthentcationRequest')
command.AuthentcationRequest.VERSION = '1.0'
command.AuthentcationRequest.DWBH = 'xxxxxxxxxx'
command.AuthentcationRequest.LWRZBH = 'xxxxxxxxxxxxxxxxx'
message = command.SerializeToString()
lenght = struct.pack('<I', len(message)).hex()
message = binascii.hexlify(message).decode()
head = struct.pack('<I', 58250).hex()
client.send(bytes.fromhex(head + lenght + message))
# 接收响应数据
data = client.recv(1024)
data = binascii.hexlify(data).decode()
# 包头
head = bytes.fromhex(data[:8])
head = struct.unpack('<I', head)[0]
# 包体长度
length = bytes.fromhex(data[8:16])
length = struct.unpack('<I', length)[0]
# 包体,十六进制字符串转换为对应的字节串
body = bytes.fromhex(data[16:])
result = {
"Flag": head,
"BodySize": length,
"Body": body
}
command = Command()
command.ParseFromString(body)
print(command)
print(command.AuthentcationResponse.INFO)
client.close()