Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: [решено] WinSock
Показать сообщение отдельно

Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Решил использовать синхронную операцию на файлах. Всё равно не работало на бинарных файлах...
После второй выпитой бутылки пива, всё таки решил эту проблему.
Оказалось всё дело в функции strlen()
Код: Выделить весь код
WriteFile(hFile, recvBuff, strlen(recvBuff), 0, 0);
Если файл текстовый то strlen() срабатывает нормально, а если бинарные данные то результат был непредсказуемый (иной раз strlen() возвращала результат в 2 раза больше нужного).
А нужно было так:
Код: Выделить весь код
while(1)
{
     int ret = recv(sock, recvBuff, sizeof(recvBuff), 0); //recv(...) возвращает длину данных, записанных в recvBuff
     ....
     WriteFile(hFile, recvBuff, ret, 0, 0);
}

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".


Отправлено: 11:50, 31-07-2009 | #3

Название темы: [решено] WinSock