在我的应用程序中,我发现我收到的信息比我预期的多2个字节。我不知道这两个字节是什么意思,因为在客户端我记录发送的字节,我在服务器上收到所有,但在数据后我仍然收到这两个字节,使我的程序崩溃。为什么?有什么想法吗?
编辑1
在客户端
int sentBytes = send(socket, data, size, 0);
并在服务器上
int receivedBytes = SOCKET_ERROR;
char *header = new char[8];
receivedBytes = recv(socket, header, 8, 0);
if (receivedBytes == 0 || receivedBytes == WSAECONNRESET)
{
...
}
else
{
size_t data_size = 0;
std::istringstream is(std::string(header, 8));
if (!(is >> std::hex >> data_size))
{
char *data = new char[data_size + 1];
data_size = recv(socket, data, data_size, 0);
}
}
我正在使用带有WSAAsyncSelect的win32消息循环
编辑2
我正在使用前8个字节发送一个十六进制值,其中包含我应该在服务器上收到的消息长度
答案 0 :(得分:2)
recv()
读取下一个数据包。