外部システムと通信するときに、レスポンスの終わりにヌルバイトを追加します。しかし、私はいくつかの問題に直面している:「hardcodedResponse」▒続く:文字配列内の16進数で、ソケットに書き込むときにランダムな文字が返される
//reading from socket
//sending response
std::string response = "hardcodedResponse";
int bufferSize = response.size() + 1; // +1 for the trailing zero
char buffer[bufferSize];
for (int i = 0; i < response.size(); i++)
{
buffer[i] = response[i];
}
buffer[bufferSize] = 0x00;
int socketfd = 1;
unsigned bytesWritten = 0;
while (bytesWritten < bufferSize)
{
bytesWritten += ::write(socketfd, buffer[bytesWritten], bytesToWrite - bytesWritten);
}
を私はソケットに何かを送信するためにTelnetを使用する場合、私は応答を受信します。私は0x00がヌルなので意味があると考えました。しかし、最後に0x41(A)を追加すると、 "hardcodedResponse" +(一見すると)ランダムな文字が返されます。ソケットに書き込む前にバッファの最後の文字を印刷すると、 'A'が表示されます。これは、外部システムが正しいバイトを受け取るかどうかは関係ありませんが、まあ、ランダムなものを受け取ります。
なぜこのようなことが起こっているのですか?うまくいけば誰かが私の理解を助けることができます。別にすべてのソケットから
くそーを、私は私は完全にそれを見ていない16進/ソケットの部分に焦点を当てていた。ありがとう:) – Aelion