У меня есть опыт работы с Java, но я должен интегрировать библиотеку Java в код Python для коллег. Введите jython, ууу!
Мы пытаемся отправить пакет UDP с очень специфическим разделом данных.
Мы создаем пакет следующим образом:
version = 0x0001
referenceNumber = 0x2323
bookID = byteArray('df82818293819dbafde818ef')
Для простоты объяснения предположим, что byteArray принимает строку шестнадцатеричных цифр и возвращает массив байтов
Затем мы создаем пакет:
packet = hex(version)
packet += hex(referenceNumber)
packet += bookID
и отправьте его в розетку.
Я знаю, что это неправильно, типы данных не могут быть правильными, поэтому concat не будет делать правильные вещи. Как правильно собрать этот пакет? Документация Python говорит, что s.sendTo () принимает строку? Я думаю, что мне нужна альтернатива s.sendTo (), которая принимает байтовый массив.
Мы хотим, чтобы пакет поступил на сервер с разделом данных udp, похожим на:
00 01 23 23 df 82 81 82 93 81 9d ba fd e8 18 ef
Каков правильный подход для этого в python?
Мы используем wireshark, чтобы убедиться, что пакет поступил правильно, и сейчас раздел данных udp выглядит так, как будто python преобразует каждое поле как представление ascii. Например, поле referenceNumber встречается как значения ascii для литеральной строки '0x2323'. Это имеет смысл, потому что s.sendTo () принимает строку.
==================== РЕШЕНИЕ ========================== ====
Да, это делает ... показывает, как я новичок в Python. Для любопытных вот код:
version = '0001'
referenceNumber = '2323'
packet = a2b_hex(version)
packet += a2b_hex(referenceNumber)
.. etc
тогда просто
s.send(packet)