winsock - проблема с потерей данных
От: Андрей Шестимеров Россия http://informatics.ru
Дата: 05.09.06 21:00
Оценка:
Доброго времени суток!

Возникла такая проблема — есть сервер получающих данные:

        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`а, то всё нормально доходит.

В чём может быть проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.