Заголовок ответа сокета в шестнадцатеричном формате из двух цифр - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть соединение через сокет TCP, где я пытаюсь ответить на сообщение с запросом. Моя спецификация гласит, что ответ на запрос должен иметь формат:

Header  Data

Где заголовок содержит длину данных в шестнадцатеричном формате из двух цифр. Мои данные ответа "202000000000000TEST0_OK ".

Поскольку ответ имеет длину 25 символов, я предположил, что заголовок будет шестнадцатеричным представлением 25, поэтому 0x19. Однако при отправке этого сообщения я получаю неизвестную ошибку от устройства, на которое отвечаю.

Используя библиотеку BlueSocket, я отправляю свой ответ, используя:

if(message.contains("00000000000000001")) {
    reply = "202000000000000TEST0_OK  "
    var header: UInt8 = 0x19
    try socket.write(from: Data.init(bytes: &header, count: MemoryLayout<UInt8>.size))
    try socket.write(from: reply)
}

К сожалению, у меня нет дополнительной информации об ошибке. Я вполне уверен, что мое понимание того, как рассчитать и отправить заголовок, неверно ...

Редактировать: Я также попробовал следующие ответы, которые все не удалось:

  • "25XXXXXXXXXXXXXXXXXXXXXXXXX" Начинается с десятичной длины строки данных (25).
  • "27XXXXXXXXXXXXXXXXXXXXXXXXX" С добавлением всей длины данных и строки заголовка (27).
  • "19XXXXXXXXXXXXXXXXXXXXXXXXX" С добавлением шестнадцатеричного представления длины строки данных (25 символов и 0x19).
  • "1BXXXXXXXXXXXXXXXXXXXXXXXXX" С добавлением шестнадцатеричного представления всей длины данных и строки заголовка (27 символов, 0x1B).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...