ftp download

R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

Witam!
Prosty kod (na podstawie msdn):

Kopiuj
int main()
{
    HINTERNET INT = InternetOpen("client", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
    check(INT);
    HINTERNET FTP = InternetConnect(INT, HOST_FTP, INTERNET_DEFAULT_FTP_PORT, LOGIN_FTP, PASSWORD_FTP, INTERNET_SERVICE_FTP, 0, 0);
    check(FTP);
    bool good = FtpGetFile(FTP, "test.txt", "test.txt", false, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);
    check(good);
    return 0;
}

check() to po prostu moja funkcja informująca o ewentualnym błędzie, kodzie błędu i zamykająca program w razie czego.
Problem w tym, że FtpGetFile() wywala błąd o kodzie 12031 - "The connection with the server has been reset."
Średnio mi to coś mówi, w każdym razie, jeżeli plik usunąłem z ftp kod błędu był taki sam. Czy jakoś nie tak odwołuję się do tego pliku? Na ftp wrzuciłem go bezpośrednio, bez żadnych folderów. Nie wiem co jest nie tak.


R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

Nikt nie pomoże? :(
Ludzie, bo ja już osiągnąłem wyżyny frustracji i żyję w skrajnej nerwicy :/
No nie mogę tego samodzielnie rozkminić...
Już mi przychodzą myśli, że może po stronie serwera jest coś nie tak? Ale to raczej niemożliwe, jak się łączę managerem ftp, wszystko jest ok.
Może nie taka konfiguracja połączenia jest? (źle ustawione flagi itp?). Ale jak przeglądałem różne kody źródłowe to właśnie w ten sposób jest to wszędzie zrealizowane. Dodawanie różnych slash'y do ścieżek plików też nic nie daje. Jakiekolwiek firewall-e / antywirusy wyłączone.
Nie mam już żadnych pomysłów, wszystko wydaje się dobrze zrobione...


edytowany 3x, ostatnio: radoslav006
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Sprawdź czy możesz łączyć się zewnętrznie z FTP, wiele hostingów na to nie pozwala.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

Konto ftp założyłem na cba.pl i przy łączeniu się przez program zewnętrzny (FileZilla) nie było żadnych problemów.


R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

Hmm, a możecie polecić jakieś inne biblioteki do obsługi ftp??
Tym sposobem się chyba poddaję.


OT
  • Rejestracja:około 20 lat
  • Ostatnio:ponad 11 lat
0

curl

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
0

Wywal flagę INTERNET_FLAG_ASYNC.

R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

A co jeśli chodzi o winsock? Kiedyś pisałem prostacki komunikator między dwoma komputerami, da się tym obsłużyć ftp??

@_0x666_
Od razu się rzuciłem na kompilator ;P Niestety...
Hmm, z tego co jest napisane na msdn, to są dostępne trzy flagi w tamto miejsce:
INTERNET_FLAG_ASYNC
INTERNET_FLAG_FROM_CACHE
INTERNET_FLAG_OFFLINE
Z czego dwie ostatnie "does not make network requests".
Oczywiście, próbowałem empirycznie kombinować ;P Ale też nie wychodzi... A w ogóle co dziwne INTERNET_FLAG_FROM_CACHE wywala mi błąd kompilacji.
W każdym razie nie chce działać nadal :/

@othello @xeo545x39
Dzięki, może jakoś w tym mi wyjdzie...


edytowany 1x, ostatnio: radoslav006
06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
0
Kopiuj
HINTERNET hInt = InternetOpen("client", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if(hInt)
{
	HINTERNET hFTP = InternetConnect(hInt, "biolpc22.york.ac.uk", INTERNET_DEFAULT_FTP_PORT, "", "", INTERNET_SERVICE_FTP, 0, 0);

	FtpGetFile(hFTP, "/pub/1.68B/readme.txt", "test.txt", false, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);

	InternetCloseHandle(hFTP);
	InternetCloseHandle(hInt);
}

Tu masz przykład kodu, który ściąga plik z publicznego serwera FTP wxWidgets. NIe byłem w stanie przetestować tego na koncie cba.pl, ale radykalnych zmian w kodzie nie powinno być.

p.s. nie pisz dużymi literami nazw zmiennych. Taki INT jest już zdefiniowany w windows.h.

edytowany 1x, ostatnio: _0x666_
OT
  • Rejestracja:około 20 lat
  • Ostatnio:ponad 11 lat
0

A co jeśli chodzi o winsock? Kiedyś pisałem prostacki komunikator między dwoma komputerami, da się tym obsłużyć ftp??

A czemu ma sie nie dac? Ftp to przecież tylko protokół tcp. Specyfikacja ftp do ręki i jedziesz. Napiszesz sobie od zera bibliotekę do obsługi ftp.

R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

@_0x666_
No tak, z tym INT-em rozumiem. Hmm, jak działa Ci ten kod to już nic nie rozumiem - u mnie nie paca. Na komputerze kolegi z pokoju też odpalałem i ten sam błąd wyrzuca... Czyli dla mnie tak to wygląda jakby wina była po stronie sieci? Nie wiem, nie znam się. Ale skoro Tobie działa, u mnie nie działa, u niego nie działa to wyklucza raczej błędy jakieś systemowe (no musielibyśmy je mieć obydwaj), ale z kolei do tej samej sieci jesteśmy podłączeni, więc może tutaj tkwi problem? Spróbuję to jeszcze odpalić w zupełnie innym miejscu... po prostu z braku lepszych pomysłów ;P Niedługo chyba kosmitów zacznę podejrzewać...
Jak znajdę czas to spróbuję pokombinować na winsock, poszperam w necie, coś tam jest.


06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
1

Spróbuj odpalić połączenie w trybie pasywnym:

Kopiuj
HINTERNET hFTP = InternetConnect(..., INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

@_0x666_
......
Działa!
Jesteś moim mistrzem ;D
Moja klawiatura nie jest w stanie przelać mojej wdzięczności ;) Kurde, dzięki ;)

Problem praktycznie rozwiązany, ale ciekawi mnie jaka była teoretyczna przyczyna? Co oznacza dokładniej ten tryb pasywny?

W ogóle oczywiście wszystkim bardzo dziękuję za zainteresowanie tematem ;)


KA
  • Rejestracja:prawie 21 lat
  • Ostatnio:około 4 lata
  • Postów:1652
0

A wiesz w ogóle jak działa FTP-a? http://pl.wikipedia.org/wiki/File_Transfer_Protocol

several
Pytasz jakbyś nie znał odpowiedzi :P
several
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 4 godziny
0

Co oznacza dokładniej ten tryb pasywny?

Ten tryb oznacza, że klient wykonuje dodatkowy request w celu ustalenia na jaki port (socket) ma się podłączyć żeby pobrać dane.


06
  • Rejestracja:prawie 20 lat
  • Ostatnio:około rok
  • Postów:2440
1

Co oznacza dokładniej ten tryb pasywny?

Tryb pasywny oznacza, że klient ustanawia połączenie do przesyłu danych. W trybie aktywnym klient podaje swoje namiary (IP i port), i wtedy serwer łączy się z klientem. Stąd wniosek prosty, że jeśli nie masz publicznego IP, nie masz przekierowanych portów lub po prostu masz je poblokowane, to tryb aktywny nie zadziała. Nie wiem, jaką aplikację robisz, ale zostaw możliwość wyboru między trybami pracy. Tryb pasywny nie musi zawsze działać.

R0
  • Rejestracja:około 17 lat
  • Ostatnio:około 10 lat
0

No jakbym wiedział jak to wszystko działa to pewnie nie miałbym takich problemów ;)
No tak to jest, ze czasami chcemy coś wykorzystywać w praktyce nie znając podstaw teoretycznych... Przynajmniej mi się to zdarza ;P Ehh, nie ma to jak zdobywać wiedzę od d*** strony, sam jestem sobie winien. W każdym razie już lepiej rozumiem jak to całe ftp działa. Kolejny krok do przodu.
Jeszcze raz dziękuję wszystkim, jak dla mnie temat zamknięty.


Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)