
30.12.2008, 23:29
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 55
Провел на форуме: 163517
Репутация:
57
|
|
Сообщение от bons
полностью код не просматривал, но что бросилось в глаза:
Код:
strncpy(temp,szRecvBuff,4); //четыре байта содержащие размер пакета
в переменной содержащей размер будут содержаться нули значит strncpy не будет работать правильно
Ну у меня максимальный размер пакета - 772. Если пакет занимает 72 байта, то остальные два символа переменной temp станут равными "-". Также и в остальных случаях. "-" будет ставится вместо, так сказать "недостающих цифр" Так что с этим все норм должно быть.
Сообщение от bons
И еще - функция recv может еще возвратить 0 если соединение корректно завершено удаленным узлом. Не мешало бы это обрабатывать.
Так мне то это зачем? У меня как только заканчивается передача файла (не важно - успешно или с ошибкой), цикл прекращается...
Сообщение от bons
вообще tcp есть потоковый протокол, то есть твой алгоритм не должен зависеть от того, пришли ли данные одним пакетом или несколькими. А у тебя кажется зависит...
У меня количество пакетов принятых клиентом и посланных сервером равны. И еще я же говорил, что текстовые файлы он моментом передает (без каких-либо ошибок), а с бинарными только че-то тупит.
Сообщение от bons
для пересылки файлов есть замечательная функция TransmitFile
лучше юзай ее
Про ТрансмитФайл слышал, только вот где ее искать? В winsock2.h ее нету.
P.s. Спасибо кстати за оперативный ответ.
|
|
|