在我的項目,協議(不可改變)指定以下結構:msgrcv() - 接收各種消息
typedef struct {
long type;
char username[USER_NAME_MAX_LENGTH];
int ipc_num;
}MSG_LOGIN;
typedef struct{
long type;
int msg_type;
char send_time[6];
char sender[USER_NAME_MAX_LENGTH];
char receiver[USER_NAME_MAX_LENGTH];
char message[MAX_MSG_LENGTH];
}MSG_CHAT_MESSAGE;
typedef struct{
long type;
int request_type;
char user_name[USER_NAME_MAX_LENGTH];
}MSG_REQUEST;
客戶端可以發送任何這些結構的給服務器,並且服務器具有相應的反應。我正在寫服務器,並不知道如何使用msgrcv()
來接收它們。當我只有一個這樣的結構時,很容易 - 我只是將一個指針傳遞給這種類型的空結構。但是如果我不知道我會收到哪一個呢?我應該只是定義struct generic {long type; char buffer[BIG_NUMBER];}
?如果是這樣,我能否將數據提取到單個變量?
您使用IPC的機制是什麼? – Kitsune 2013-03-04 00:26:19
系統V隊列。 – 2013-03-04 00:29:09