[WinINet] Tworzenie pliku na serwerze FTP
Ostatnio zmodyfikowano 2015-08-21 13:10
Vister26 Temat założony przez niniejszego użytkownika |
[WinINet] Tworzenie pliku na serwerze FTP » 2015-08-20 23:10:46 Co jest nie tak w poniższym fragmencie? while( 1 ) { HINTERNET hVisterFTP = InternetOpen( vister.userAgent, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0 ); hVisterFTP = InternetConnect( hVisterFTP, vister.name, INTERNET_DEFAULT_FTP_PORT, vister.login, vister.password, INTERNET_SERVICE_FTP, 0, 0 ); HINTERNET hFtpFile = FtpOpenFile( hVisterFTP, nazwa(), GENERIC_WRITE, FTP_TRANSFER_TYPE_BINARY, 0 ); InternetCloseHandle( hFtpFile ); InternetCloseHandle( hVisterFTP ); Sleep( 4000 ); }
Funkcja nazwa() zwraca kolejno "test1", "test2", itd. Z założenia na serwerze FTP ma się pojawiać nowy plik co 4 sekundy. Natomiast program tworzy tylko jeden o nazwie "test1". Zakładam że HINTERNET hVisterFTP jest poprawny ponieważ inne funkcje jak np FtpPutFile działają poprawnie po przekazaniu im tego uchwytu. |
|
DejaVu |
» 2015-08-21 09:22:10 Może nie zamykasz połączenia z FTP, a FTP ma limit 1 połączenia na raz.
/edit: Poza tym Twój kod jest co najmniej dziwny, zważywszy na fakt, że dwukrotnie przypisujesz wartość do zmiennej hVisterFTP. |
|
Vister26 Temat założony przez niniejszego użytkownika |
» 2015-08-21 13:10:22 Problem był z funkcją nazwa() , którą tutaj uprościłem. We właściwym kodzie, jako jeden z argumentów, przyjmowała wskaźnik na tablicę i przekraczała jej rozmiar, dodatkowo tworząc niedozwolone znaki. Działo się to zawsze za drugim wywołaniem tej funkcji więc plik był tworzony na serwerze tylko raz. Przy okazji niejako sam rozwiązał się problem z "segmentation fault", którego nie mogłem zlokalizować ;) Co do połączenia FTP to zamykam je przecież za każdym razem przez InternetCloseHandle. After the calling application has finished using the HINTERNET handle returned by InternetOpen, it must be closed using the InternetCloseHandle function. |
Tego nie doczytałem i sądziłem że wystarczy zamknąć uchwyt zwracany przez InternetConnect, szczególnie że do tej pory tym sposobem wszystko działało bezbłędnie. Niemniej poprawię to dla pewności. |
|
« 1 » |