【发布时间】:2013-11-09 20:24:47
【问题描述】:
我想在 Windows 套接字中发送结构。我使用 TCP 协议。
例如我有这个结构:
typedef struct headerLobby
{
unsigned nbGames;
} head;
我发送我的结构:
char buff[DEFAULT_BUFFER_LENGTH]; //DEFAULT_BUFFER_LENGTH = 512
headerLobby header;
header.nbGames = 1;
memcpy(buff, &header, sizeof(headerLobby));
send(ClientSocket, buff, sizeof(headerLobby, 0);
我收到数据:
headerLobby header;
char recvbuf[DEFAULT_BUFFER_LENGTH];
memset(recvbuf, 0, DEFAULT_BUFFER_LENGTH);
int iResult = recv(ConnectSocket, recvbuf, DEFAULT_BUFFER_LENGTH, 0);
memcpy(&header,recvbuf, sizeof(headerLobby));
但是当我打印 header.nbrGames 时,我没有很好的价值。
客户端和服务器都在 windows 8 64 位和处理器 intel x64 中。 我不明白我的代码有什么问题。
【问题讨论】:
-
您将
memcpying 数据从未初始化的buff转换为header,而不是相反。 -
@AdamLiss - 这应该是一个答案而不是评论
-
@Adam Liss - 抱歉,我在示例代码中取反了值。我编辑我的帖子。
-
你能打印/检查 send() 和 recv() 的返回值吗?