Проблема с отображением моих пакетов в консоли с помощью ACE

#c #packet #ace

#c #пакет #туз

Вопрос:

по причинам отладки я хочу показывать свои исходящие пакеты в консоли. Кстати, пакеты поступают на сервер корректно. Но если я хочу, чтобы они отображались в консоли перед отправкой, тогда она просто ничего не показывает:

     ACE_Message_Block *m_Header;

    ...

    size_t send_len = m_Header->length(); // Size of the Message Block

    char* output = m_Header->rd_ptr();
    printf("Output: %s", output); // Trying to show it in Console
    // Send it
    server.send(m_Header->rd_ptr(), send_len);
  

У кого-нибудь есть идея?

Ответ №1:

Скорее всего, отправляемые вами данные содержат 0, и вам также нужно будет добавить новую строку.

 for (size_t i = 0; i < send_len;   i) {
  if (output[i]<32) {
    printf("\xhhx", (unsigned char) output[i]);
  } else {
    printf("%c", output[i]);
  }
}
printf("n");
  

Комментарии:

1. Ах, спасибо, теперь он показывает мне: x00 x06 x09 x00 x00 x00 x00 x1c Возможно ли отобразить в виде десятичной дроби?

2. @Sapd: Измените первый printf на, например printf("<%hhi>", output[i]);