Я пишу клиент для приложения P2P в минуту, и спецификация протокола говорит, что заголовок для каждого пакета должен иметь каждое поле с определенной длиной байта, например:
Version: 1 Byte
Type: 1 Byte
Length: 2 Bytes
And then the data
У меня есть способ упаковки и распаковки полей заголовка (я думаю) следующим образом:
packed = struct.pack('cch' , '1' , '1' , 26)
Это создает заголовок для пакета с длиной данных 26, но когда дело доходит до распаковкиданные Я не уверен, как получить остальные данные потом.Для распаковки нужно знать размер всех полей, разве я что-то упустил?Я предполагаю, что для упаковки данных я бы использовал индикатор формата 'cch26s', означающий:
1 Byte char
1 Byte char
2 Byte short
26 Byte char array
Но как мне распаковать данные, когда я не знаю, сколько данных будет сначала включено в пакет?