0

ブーストは初めてです。複数のデータ型の値を含む udp パケットを送信したいと考えています。たとえば、最初の 2 バイトがメッセージ コードに使用され、最後の 1 バイトがサービス ID に使用される 3 バイトのパケットを送信したいとします。この目的で memcpy を使用しましたが、結果のバッファーには正しい値と目的の値が含まれていません。これが私のコードです。

char buff[3];
uint16_t msgCode = 23;
char serviceId = '9';

msgCode = htons(msgCode);

memcpy(buff, &msgCode, 2);
memcpy(buff+2, &serviceId, 1);

std::string data = buff;
boost::shared_ptr<std::string> message(new std::string(data));

sock.async_send_to(boost::asio::buffer(data),dest_endPoint
, boost::bind(&udp_class::handle_send, this, message, boost::asio::placeholders::error
, boost::asio::placeholders::bytes_transferred));

注: バッファにのみ問題があります。つまり、複数の型の値をバッファに挿入し、udp パケットとして送信する方法です。

事前に感謝します。

4

1 に答える 1