Отговори на тема  [ 8 мнения ] 
Странно поведение при ftp прехвърляне 
Автор Съобщение
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Странно поведение при ftp прехвърляне
Имам програма, която трябва да прехвърля 4 различни файла през определено време към FTP сървър. Ето кода на частта с прехвърлянето:
Код:
bool Send2ftp(char mode)
{
   bool Result;
     HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
     HINTERNET hFtpSession = InternetConnect(hInternet, L"xxx.xxx.xxx.xxx", INTERNET_DEFAULT_FTP_PORT, L"User", L"Password", INTERNET_SERVICE_FTP, 0, 0);
   switch (mode)
   {
    case 1: {Result = FtpPutFile(hFtpSession, L"D:/file1.dat", L"/data/file1.dat",FTP_TRANSFER_TYPE_BINARY,0);break;}
    case 2: {Result = FtpPutFile(hFtpSession, L"D:/file2.dat", L"/data/file2.dat",FTP_TRANSFER_TYPE_BINARY,0);break;}
    case 3: {Result = FtpPutFile(hFtpSession, L"D:/file3.dat", L"/data/file3.dat",FTP_TRANSFER_TYPE_BINARY,0);break;}
    case 4: {Result = FtpPutFile(hFtpSession, L"D:/file4.dat", L"/data/file4.dat",FTP_TRANSFER_TYPE_BINARY,0);}
   }
  InternetCloseHandle(hFtpSession);
  InternetCloseHandle(hInternet);
return Result;
}

Файловете са от няколко десетки байта до около 6k, т.е. съвсем малки.
Кода си работи, ама не съвсем. През някакъв интервал от време (не съм установил зависимост) се получава така, че в FTP сървъра се е записала само част от файла (примерно малко повече от половината, или пък само десетина байта), а функцията е върнала, че всичко е наред. Пробвах и с PASSIVE_MODE- пак си прави магарията. Компютърът, който праща данни и сървъра са в една мрежа, връзката им е само през един суич, не минава през интернет. VC++ 2008 е средата. От какво може да се получава така?


Сря Фев 14, 2018 10:01 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9635
Мнение Re: Странно поведение при ftp прехвърляне
като начало пусни подходящи лог-левъли и на двете места, с които да виждаш име на файл и колко байта са прехвърлени. после ги сравни (големините)
сървъра да не е М$?

обърни внимание и дали файловете, които се пращат са флюшнати/затворени по време на самото предаване, т.е. дали са статични в този момент.


Сря Фев 14, 2018 10:34 am
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Re: Странно поведение при ftp прехвърляне
Малко допълнение, което може да се окаже важно: Програмата се стартира от два лаптопа, като никога не се включва едновременно и на двата. Единият е с ХР, с връзка през АР- при него нямам проблем с трансфера. Другият е с Windows 7, пак 32бита и връзката му е с кабел и именно при него са мизериите. Лог файла на FTPто казва след 20на сек, че връзката е затворена неочаквано.
ДедоБоре написа:
...обърни внимание и дали файловете, които се пращат са флюшнати/затворени по време на самото предаване, т.е. дали са статични в този момент.

Файловете се създават преди да бъдат изпратени, дали седмИцата не се мотае с окончателното им затваряне?


Сря Фев 14, 2018 10:44 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 8:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Странно поведение при ftp прехвърляне
Wireshark

_________________
Warriors of the Night, ASSEMBLER!!!


Сря Фев 14, 2018 1:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1025
Мнение Re: Странно поведение при ftp прехвърляне
ig_ivanov написа:
Файловете се създават преди да бъдат изпратени, дали седмИцата не се мотае с окончателното им затваряне?


Той ОС-ът няма да се мотае, но процесът, който ги създава, може и да не ги е затворил още, или да не е изпразнил буферите за писане. За да си сигурен, че са изпразнени буферите може да викаш fflush().

Добави отпечатването на дебъг информация в процеса, който праща. Да печата примерно колко е размерът на файла, преди да почне да изпраща.


Сря Фев 14, 2018 1:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 8:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Странно поведение при ftp прехвърляне
//оффтопик
Има грешка в кода на редове 1 и 3. Създава променливи 4 пъти по-малки от колкото му трябват.

_________________
Warriors of the Night, ASSEMBLER!!!


Сря Фев 14, 2018 2:19 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Сря Окт 03, 2007 2:39 pm
Мнения: 311
Мнение Re: Странно поведение при ftp прехвърляне
Minimum supported client: Windows 2000 Professional [desktop apps only]
Да не го рънваш някъде във фонов режим без джам отпред?
п.с. Отделно - хич не е добра практика да не проверяваш двата хендлъра дали не са null, мрежа е и всичко става, нямаш гаранция, че си направил connection ...

_________________
In God we trust. All others must submit an X.509 Certificate


Чет Фев 15, 2018 8:22 am
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Re: Странно поведение при ftp прехвърляне
Проблема е решен. Пуснах си конзолен монитор на операциите и го намерих. Не е причината в кода. Срам, не срам- оказа се омазан драйвер на мрежовата карта. Когато се прояви проблема прехвърлените байтове умират на 1460. Файловете, които са с по-малка дължина са се прехвърляли нормално, само тези които са по-големи са се скапвали. Вече всичко работи нормално.
Благодаря за съдействието.


Чет Фев 15, 2018 10:23 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни