В цикле читаю в буфер данные, когда все данные полученны уже, то есть предпоследний вызов вернул 1-10 байтов, она вызывается сного так как reads_bytes>0 , а там читать уже не чего, и прога зависает, как выйти из цикла?
while ((reads_bytes = c->recv(buf, len)) > 0) {
std::cout.write(buf, reads_bytes);
// if (reads_bytes<len) break; // можно так но подозрительно
}
/////////////////////////////////////////////////////////////////////////////////
int Socket::recv(char * buf, int len)
{
int read_bytes = ::recv(this->socket_id, buf, len, 0); // зависает после того как читать не чего, но она зупустилась уже
if (read_bytes ==SOCKET_ERROR) {
close();
error("recv failed "+ WSAGetLastError());
}
if (read_bytes == 0) {
close();
return -1;
}
return read_bytes;
}