gpt4 book ai didi

c - 使用 struct 和 union 通过 tcp ip 发送数据

转载 作者:可可西里 更新时间:2023-11-01 02:54:37 26 4
gpt4 key购买 nike

对不起我的英语不好!我正在用 C 开发一个程序来通过 tcp ip 发送数据。这个程序应该使用 struct 和 union 如下(我只放重要的代码部分):

***发送数据的服务器:

使用包含需要发送的数据的结构:

struct movimentos{

bool Frente;
bool Esquerda;
bool Direita;
bool Parado;
bool PassoDireita;
bool PassoEsquerda;
}m;

以及包含这些数据并标识结构大小的 union :

union dados{

movimentos m;
char tamanho [(sizeof movimentos)];
}uniao;

然后,我使用“发送”函数将这个结构的地址发送给客户端:

send(winsock,uniao.tamanho,sizeof(uniao.tamanho),0);

* 接收数据的客户端:

拥有与服务器相似的结构和 union :

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);

我的问题如下**

我想用server那个client发送的struct的值。但我不知道该怎么做。我想知道如何接收这些数据以便能够在程序中操纵操作。

谢谢!

最佳答案

试试这个:

//~~~~~~~~~~~~~~~~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));

关于c - 使用 struct 和 union 通过 tcp ip 发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com