私のソケットプログラムに関する質問: 私は... 内部クラスを持っています... 私は推測します (申し訳ありませんが、Java から C/C++ に来ています)。
typedef struct {
enum {Request, Reply} messageType;
unsigned int RPCId;
unsigned int procedure;
int arg1;
int arg2;
} RPCMessage;
UDP ソケットを介して送信された要求への応答として RPCMessage を受信することを期待しています。現在、次のコードを含むメッセージを受け取ります。
/* Recv a response */
fromSize = sizeof(fromAddr);
if ((respSize = recvfrom(sock, buffer, maxSize, 0, (struct sockaddr *)&fromAddr,
&fromSize)) != messageSize)
DieWithError("recvfrom() failed");
ここでのバッファは char 配列であることに注意してください。私が欲しいのは、受信したメッセージを RPCMessage に戻すことです...だから私は試しました:
RPCMessage receivedMessage = (RPCMessage)buffer;
これはコンパイラを喜ばせていません... char 配列内のこれらのバイトを RPCMessage とそのフィールドに戻す正しい方法は何ですか?