Виж темите без отговор | Виж активните теми
Дата и час: Пет Апр 19, 2024 9:47 pm
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Странно поведение при ftp прехвърляне
Автор |
Съобщение |
ig_ivanov
Ранг: Напреднал
Регистриран на: Съб Май 21, 2016 8:47 pm Мнения: 476 Местоположение: Бургас
|
Странно поведение при 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 Мнения: 9645
|
Re: Странно поведение при ftp прехвърляне
като начало пусни подходящи лог-левъли и на двете места, с които да виждаш име на файл и колко байта са прехвърлени. после ги сравни (големините) сървъра да не е М$?
обърни внимание и дали файловете, които се пращат са флюшнати/затворени по време на самото предаване, т.е. дали са статични в този момент.
|
Сря Фев 14, 2018 10:34 am |
|
|
ig_ivanov
Ранг: Напреднал
Регистриран на: Съб Май 21, 2016 8:47 pm Мнения: 476 Местоположение: Бургас
|
Re: Странно поведение при ftp прехвърляне
Малко допълнение, което може да се окаже важно: Програмата се стартира от два лаптопа, като никога не се включва едновременно и на двата. Единият е с ХР, с връзка през АР- при него нямам проблем с трансфера. Другият е с Windows 7, пак 32бита и връзката му е с кабел и именно при него са мизериите. Лог файла на FTPто казва след 20на сек, че връзката е затворена неочаквано. Файловете се създават преди да бъдат изпратени, дали седмИцата не се мотае с окончателното им затваряне?
|
Сря Фев 14, 2018 10:44 am |
|
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 8:59 pm Мнения: 6019 Местоположение: София
|
Re: Странно поведение при ftp прехвърляне
Wireshark
_________________ Warriors of the Night, ASSEMBLER!!!
|
Сря Фев 14, 2018 1:06 pm |
|
|
radolin
Ранг: Форумен бог
Регистриран на: Пон Дек 19, 2005 11:21 am Мнения: 1029
|
Re: Странно поведение при ftp прехвърляне
Той ОС-ът няма да се мотае, но процесът, който ги създава, може и да не ги е затворил още, или да не е изпразнил буферите за писане. За да си сигурен, че са изпразнени буферите може да викаш fflush(). Добави отпечатването на дебъг информация в процеса, който праща. Да печата примерно колко е размерът на файла, преди да почне да изпраща.
|
Сря Фев 14, 2018 1:14 pm |
|
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 8:59 pm Мнения: 6019 Местоположение: София
|
Re: Странно поведение при ftp прехвърляне
//оффтопик Има грешка в кода на редове 1 и 3. Създава променливи 4 пъти по-малки от колкото му трябват.
_________________ Warriors of the Night, ASSEMBLER!!!
|
Сря Фев 14, 2018 2:19 pm |
|
|
goose
Ранг: Популярен
Регистриран на: Сря Окт 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 |
|
|
ig_ivanov
Ранг: Напреднал
Регистриран на: Съб Май 21, 2016 8:47 pm Мнения: 476 Местоположение: Бургас
|
Re: Странно поведение при ftp прехвърляне
Проблема е решен. Пуснах си конзолен монитор на операциите и го намерих. Не е причината в кода. Срам, не срам- оказа се омазан драйвер на мрежовата карта. Когато се прояви проблема прехвърлените байтове умират на 1460. Файловете, които са с по-малка дължина са се прехвърляли нормално, само тези които са по-големи са се скапвали. Вече всичко работи нормално. Благодаря за съдействието.
|
Чет Фев 15, 2018 10:23 am |
|
|
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|