2011-04-10 42 views
0

爲調試的原因,我想在控制檯中顯示我的傳出數據包。 數據包順利到達服務器btw。 但是如果我想他們在控制檯發送之前顯示的話,那只是和什麼:與控制檯顯示我的數據包與ACE的問題

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); 

有人有想法?

回答

0

您發送的數據可能包含0,您還需要追加換行符。

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

啊THX,現在它顯示我: \ X00 \ X06 \ X09 \ X00 \ X00 \ X00 \ X00 \ X1C 是否有可能顯示爲十進制? – Sapd 2011-04-10 09:04:26

+0

@Sapd:將第一個printf更改爲'printf(「<%hhi>」,輸出[i]);' – Erik 2011-04-10 09:06:15

+0

謝謝你的幫助。現在一切正常);) – Sapd 2011-04-10 09:08:17