Доброго времени суток!
Возникла такая проблема — есть сервер получающих данные:
while (true)
{
recvBuff.BufferClear();
bytesRecv = recv( AcceptSocket, (char*)recvBuff, sizeof (recvBuff), 0 );
....
}
и клиент, который отправляет:
while (!feof(stream))
{
readbuf = freadEvent(stream, seekPos);
sendbuf.bufferClear();
strncpy(sendbuf.packetType, "data", 4);
strncpy(sendbuf.packetValue, readbuf.c_str(), n);
bytesSent = send(acceptSocket, (char*)sendbuf, sizeof(sendbuf), 0);
if (bytesSent == SOCKET_ERROR)
{
fseek (stream,undoSeekPos,SEEK_SET);
break;
}
else
hasSent = true;
}
Сокеты блокирующие, синзронные. По сокетам передаются куски файла, и вот некоторые куски или части их не получаются на сервере.
При этом если при других запусках теряются те же куски. Но если поставить задержку после send`а, то всё нормально доходит.
В чём может быть проблема?