私はツールNCTUnsで作業しています。ここではsendto関数を介して構造体を送信しています。関数SENDTOでソケット(C++)を介して構造体を送信し、RECVFORMで受信しましたが、常にガベージ値がいくつかあります。
私の構造 -
struct agentClientReportStatus{
u_int32_t type;
u_int32_t nid;
double timeStamp;
int flag;
u_int32_t moreMsgFollowing;
double x;
double y;
double x1;
double y1;
double acceleration;
double speed;
double direction;
int TTL;
int seqNum;
}
と機能がある -
n = sendto(myUDPsockfd, msg, sizeof(struct agentClientReportStatus), 0, (struct sockaddr *) &cli_addr, len);
n = recvfrom(myUDPsockfd, (char *)&msg, sizeof(struct agentClientReportStatus), 0, (struct sockaddr *) &cli_addr, &len);
私はその与え、正しい出力をいくつかの値を印刷するときのセクションを送信するには。 しかし、受信側ではガベージ値を取得しています。シリアライズせずに送信することは可能ですか?もしそうでなければ、どうやってシリアライゼーションをするのですか?
msgは - agentClientReportStatus * msgです。 msg =新しいagentClientReportStatus;
あなたは 'data'という名前の構造体について話していますが、この関数は' agentClientReportStatus'を記述しています。説明できますか ? –
そして、 'msg'がどんなタイプで、どのように割り当てられているのかを知る必要があります。タイプ 'data *'の 'msg'はありますか? –
[C++ミドルウェアライター](http://webebenezer.net)は、シリアライゼーションに役立つ可能性があります。 uint32_tをサポートしています。 –