소켓 연결을 통해 데이터 패킷을 송수신하여 타사 TCP/IP 기반 API와 상호 작용하는 Python 2.7 프로그램을 작성 중입니다. Python 2.7/python-lzo로 압축 해제 MiniLZO 문자열 1.11
데이터 패킷
는 다음의 부분으로 구성- 10 바이트 길이의 헤더, 데이터의 앞에 삽입되고;
- 본체;
- 예고편을 데이터 끝에 추가해야합니다.
헤더에는 데이터 길이 및 데이터 유형에 대한 정보가 포함됩니다. 전체 데이터 패킷에는 헤더, 실제 데이터 및 트레일러가 포함됩니다.
압축 방법은 MiniLZO입니다.
내 문제는 데이터를 처리하는 방법입니다. 특히 MiniLZO로 압축 된 패킷 본문입니다. 예를 들어
, I 이런 요청 보낼 때
bytearray(b'\x01W\x00\x00\x000W\x00\x00\x00')
<TASK><MESSAGE Type="LogonReq" Session="" Reference="TP1" Product="2">
</MESSAGE></TASK>
bytearray(b'\x02')
서버가 회신 :
: I 패키지python-lzo
1.11를 설치하여 몸을 압축 해제하려
HEADER: 10 Bytes
'\x01\xb1\x00\x00\x001\xae\x00\x00\x00'
BODY:177 Bytes
'\x002<TASKREPLY><MESSAGE Type="LogonReqReply" Session="DUH3PRdH"
ReferencP\x05\x00\x18TP1" Product="2">\r\n<ANSWER Result="1"
[email protected]\x01\x00\x1225146" Date="20171028" Mode="P" /></\xcc\x11\x0c>
</TASKREPLY>\r\n\x11\x00\x00'
TRAILER:1 Bytes
'\x02'
>>> import lzo
>>> lzo.decompress(body)
하지만이 오류를 반환합니다 :
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
lzo.decompress(body)
error: Header error - invalid compressed data
이 문제를 해결하는 방법을 모릅니다. 나는 그것을 시도했지만 파이썬/미니 LZO에 관한 정보는 거의 없다. lzo
패키지를 잘못된 방법으로 사용했는지 또는 데이터가 처음에 부적절하게 압축되었는지 확실하지 않습니다.