в своем приложении я обнаружил, что получаю на 2 байта больше, чем я ожидаю. Я не знаю, что означают эти 2 байта, потому что в клиенте я регистрирую отправленные байты и получаю все на сервере, но после данных я все еще получаю эти 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);
}
}
Я использую цикл сообщений win32 с WSAAsyncSelect
РЕДАКТИРОВАТЬ 2
Я использую первые 8 байтов для отправки шестнадцатеричного значения, которое содержит длину сообщения, которое я должен получить на сервере