1
我的应用程序中发现我收到的字节数超过了我的预期。我不知道这2个字节意味着什么,因为在客户机中我记录了发送的字节,并且我收到了服务器上的所有数据,但是在数据发送之后,我仍然收到了这两个字节导致程序崩溃。为什么?任何想法?发送的字节数多于我应该通过套接字接收到的字节数
客户端
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);
}
}
我使用的win32消息循环与WSAAsyncSelect
EDIT 2在服务器上EDIT 1
我使用的是前8个字节发送包含该消息的长度,我应该接受在服务器上的十六进制值
发表一些代码,我失去了我的水晶球。 – 2011-04-28 16:56:53
开始和结束传输(STX和ETX)字符被占? – 2011-04-28 17:02:22
@Heandel @Cole对不起,我不明白,你在说什么? – Stefano 2011-04-28 17:03:11