抱歉我的英语不好!我正在用C开发一个程序来通过tcp ip发送数据。这个程序应该使用struct和union,如下所示(我只将部分代码放在一起):
***发送数据的服务器:
使用包含需要发送的数据的结构:
struct movimentos{
bool Frente;
bool Esquerda;
bool Direita;
bool Parado;
bool PassoDireita;
bool PassoEsquerda;
}m;
包含这些数据并确定结构大小的联合:
union dados{
movimentos m;
char tamanho [(sizeof movimentos)];
}uniao;
然后,我使用'send'函数将此结构的地址发送到客户端:
send(winsock,uniao.tamanho,sizeof(uniao.tamanho),0);
* 接收数据的客户:
具有与服务器相同的结构和联合:
struct movimentos{
bool Frente;
bool Esquerda;
bool Direita;
bool Parado;
bool PassoDireita;
bool PassoEsquerda;
}move;
union dados{
movimentos move;
char tamanho [(sizeof movimentos)];
}uniao;
函数'recv'接收套接字和Union地址:
int bytes=recv(winsock,uniao.tamanho,sizeof(uniao.tamanho),0);
我的问题是以下 **
我想使用客户端服务器发送的struct的值。但我不知道该怎么做。我想知道如何让收到的数据能够操作程序中的操作。
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
试试这个:
//~~~~~~~~~~~~~~~~SENDER
movimentos movi;
//send your struct by giving it's address
send(winsock, &movi, sizeof(movimentos), 0);
//~~~~~~~~~~~~~~~~RECEIVER
movimentos movi;
int bytes = recv(winsock, &movi, sizeof(movimentos), 0);
//~~~~~~~~~~~~~~~~RECEIVER 2 (BETTER)
movimentos movi;
BYTE buffer[1024]; //for example
int bytes = recv(winsock, buffer, 1024, 0);
memcpy((void*)&movi, (void*)buffer, sizeof(movimentos));