UDPソケットを介して送信されるメッセージがあります。メッセージのタイプはRPCMessageです。
typedef struct
{
enum {Request, Reply} messageType;
unsigned int RPCId;
unsigned int procedure;
int arg1;
int arg2;
} RPCMessage;
メッセージを送信する準備をしているときに、次のようにメッセージを作成します。
RPCMessage toSend = {RPCMessage::Reply, htonl(rpcId), htonl(procedureId), htonl(int1), htonl(int2);
メッセージを受信すると、char[]に受信されます。バッファを呼び出します。バッファ全体をRPCMessageにキャストするだけでなく、バッファから各引数を1つずつ読み取り、最初の引数を正しい列挙型として使用し、ntohlを使用する方がよいことが提案されています。お互いの議論。これを行うための最良の方法は、次のようなものでしょうか。
RPCMessage::messageType type;
unsigned int id, procedure;
int int1, int2;
sscanf(buffer, %d%d%d%d%d, type, id, procedure, int1, int2);
RPCMessage received = {type, ntohl(id), ntohl(procedure), ntohl(int1), ntohl(int2));
または別の/より良い方法はありますか?