我正在linux环境中用c++开发客户机服务器应用程序。
我用了一些通讯协议。
客户端可以发送以下两种结构中的任何一种。
1)
typedef struct
{
String userName;
} user;
typedef struct
{
msgId = 20;
user u1;
} msg1;2)
typedef struct
{
String mailId;
} mail;
typedef struct
{
msgId = 30;
mail m1;
} msg2;现在假设客户端在将数据填充到结构后将msg2发送到服务器。
write (socket_fd, (struct sockaddr*)&msg2, sizeof(msg2));
在服务器端,当我收到结构时
read (client_socket_fd, &a, sizeof(a)); // here I have written &a because I do not know which structure I received.
那么,我如何知道在服务器端接收到的结构呢?
请帮助我,如果问题看上去如此愚蠢,那么请建议我阅读该主题的文章或名称。
谢谢。
发布于 2014-03-20 17:02:35
使整件事成为包含联盟的结构:
union rcv
{
struct msg1 m1;
struct msg2 m2;
};
struct msg
{
int msg_id;
union rcv msg;
};https://stackoverflow.com/questions/22539928
复制相似问题