Показать сообщение отдельно

  #2  
Старый 26.09.2008, 00:26
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме:
1777055

Репутация: 347
По умолчанию

тут много неправильного.
Про отдающую сторону:
структуру SOCKADDR_IN надо обнулить перед использованием (точнее некоторые ее поля)

Код:
DWORD e=GetFileSize(f,&ss);
if(e>0){sz=e;}if(e<1){sz=ss;}
в переменную ss вообще-то записывается старшая часть 64-битного размера файла, и смысл приведенных операций не совсем ясен

потом неправильно организован цикл чтения и выдачи файла. Например вот так неправильно
Код:
ReadFile(f,buf,(1024*1024)*10,&rb,0);
sz=sz-(1024*1024)*10;send(s,buf,rb,0);
во-первых вовсе не факт что ReadFile прочтет именно 10 кб данных и никак не меньше. Во-вторых совсем не обязательно что send отправит именно столько данных сколько ему передали а не меньше
Зачем здесь вызывается функция SetFilePointer непонятно.

еще там используется strlen для бинарных данных, что никак недопустимо

с принимающей стороной все еще хуже ошибок очень много