Toon posts:

[VB6.0] FTP protocol

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ola,

ik ben bezig met een kleine ftp client.. Deze hoeft alleen maar te uploaden, heel simpel..
Nou heb ik niet echt een probleem maar iets is me niet helemaal duidelijk, als ik PASV stuur, dan ontvang ik een IP + 2 poorten..

Nou ik zit in PASV dus dan moet ik voor de tranfser naar de FTP Server verbinden, dus dan stuur ik:

PORT 127,0,0,1,p1,p2

FTP Server draait even localhost zodat ik precies kan zien wat er gebeurd, is een Bulletproof server..
Nou die p1 en p2 dat zijn 2 poorten, die ontvang ik van de server.. Nou dat gaat allemaal perfect, dan krijg ik als antwoord 150 Opening data connection of iets in die zin, nou moet ik dan gaan verbinden naar de server ?

Dan moet ik dus verbinden op poort: p1*256+p2 aight ?
Zo bereken je de poort, dat klopt wel.. want als ik een nieuwe socket laat LUISTEREN op die poort dan word er idd verbonden met die poort nadat ik STOR heb gestuurd..

Dus alles gaat goed, maar ik weet gewoon even niet meer wat ik nou precies moet doen nadat ik STOR heb gestuurd.. moet ik dan luisteren aan een poort of connecten naar ftp server ?

Thnx

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
In PASV mode is de client degene die al de connecties maakt. De client maakte altijd al de control connection, maar daar komt nu dus ook de data connection bij. De server geeft vervolgens aan naar welke poort dit dan is.

Dus: de server luistert aan de poort die hij teruggeeft en als client maak jij daar een connectie naartoe :)

[ Voor 11% gewijzigd door Infinitive op 28-12-2006 14:00 ]

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Hey ik wil je graag verder helpen ik heb zelf toevallig pasgeleden een VB6 ftp programma geschreven, is even wat code opduikelen,

Zorg ervoor dat je een icftp object genaamd icftp hebt op je form, je kunt dit icftp opject invoegen door in VB6 naar components te gaan en daar "Microsoft Internet transfer control 6.0 SP4" aan te vinken.

stel in de icFTP alles in zoals jij het graag wilt, ik gebruik zelfs: accestype: icdirect en protocol :icdefault wachtwoorden enzo hoef je nog niet in te vullen

zet dan de volgende code achter je knopje wat het uploaden moet starten.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim sExecute as string

sExecute = "PUT" &  " " & "C:\Map\Bestand.txt" & " " & "/Doelmap/Doelpad"
' om bijvoorbeeld het bestand Test.txt uit de map C:\Test te uploaden naar je FTP in de map \Aap
'sExecute = "PUT C:\Test\Test.txt /Aap\Test.txt"
'downloaden kan ook via: "GET /Aap\Test.txt C:\Test\Test.txt"
'dan de echte code
With icFTP
    .URL = sURL   'de url naar je ftp server bijv. ftp://192.168.1.100, let op ook ftp er voor!
    .UserName = sUsername 'de gebruikersnaam om in te loggen op je ftp
    .Password = sPassword 'wachtwoord
    .Execute , sExecute 'voor je commando's uit die je net hebt ingevoerd
End With


Succes!

EDIT: |:( ik zou de rest moeten lezen!, het opslaan is dus geen probleem, misschien heb je toch iets aan deze code, omdat deze alles automatisch afhandelt, hoef je niet zelf mappen te browsen en STOR te sturen en dergelijk. je kan gewoon de link gebruiken die je ook invoert in je internet explorer om op je ftp te komen, bijvoorbeeld ftp://192.168.1.100

[ Voor 12% gewijzigd door roy-t op 28-12-2006 20:43 . Reden: Lezen tot het einde is een kunst! ]

~ Mijn prog blog!


Verwijderd

Topicstarter
Ik gebruik geen INET control maar winsock..

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je zou er eens de RFC's bij kunnen pakken ;) Daar staat het precies in beschreven.

[ Voor 10% gewijzigd door RobIII op 29-12-2006 22:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Hmm..
Wat het rare is.. Als ik PORT stuur met de juiste parameters.. dan krijg ik 150 terug.. Dat is goed.. dus dan terwijl ik 150 ontvang, dan laad ik een nieuwe socket in de sockets array.. Dan gaat die verbinden met de opgegeven port in de response na het sturen van PASV maar dan kan die maar niet verbinden..

Dus dan stuurt die daarna terug 425 cannot open data connection.. Maar ik zit in PASV mode dus ik zou moeten verbinden met de server ipv dat die met mij verbind.. Maar als ik dan eens men socket laat luisteren ipv verbinden dan krijg ik wel een connection request maar ik zit tog in PASV !??

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
http://slacksite.com/other/ftp.html misschien heb je hier wat aan, de werking van passive ftp uitgelegd

maar als ik dit zo lees:

code:
1
2
3
4
5
6
7
Active FTP :
     command : client >1023 -> server 21
     data    : client >1023 <- server 20

 Passive FTP :
     command : client >1023 -> server 21
     data    : client >1023 -> server >1023


Moet je gelijk hebben, krijg je deze errors ook met een ander ftp server programma (dl anders FileZilla Server even, toch gratis, en geeft veel berichten weer in het scherm) En weet je zeker dat je winsock, en server op pasv staan?

~ Mijn prog blog!


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Voor VB6 is erg veel winsock gebeuren te vinden op vbip.com; wel gaat het daarbij vaak om een "gewrapte" winsock, en dus niet de "native" winsock van VB6.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Wat ik niet snap, dat ik geen verbinding kan leggen met de server maar enkel verbinding kan ONTVANGEN terwijl ik in PASV mode zit ???

Ik moet verbinden wanneer ik CMD: 150 heb ontvangen aight ?
En wanneer stuur ik STOR ? als het bestand binnen is of als het bestand moet begonnen worden met uploaden.

En als ik begin te sturen van binary data moet ik dan niet een BOF en EOF command sturen ??

Dit zijn dingen ik niet uit die referenties kan halen..


Ben ik gek of verdwijnen er steeds berichten uit dit topic ??

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
STOR volgens mij als je wilt beginnen met uploaden... vaag verhaal dit, al een andere ftp server geprobleerd?

(offtopic: maar waarom gebruik je eigenlijk winsock? als icFTP dit voor je kan doen? en het lijkt er zo op dat je nog niet erg ver bent, met het ftp gedeelte van je app, of zit je ergens aan vast/wil je speciale commando's uitvoeren?))

~ Mijn prog blog!


Verwijderd

Topicstarter
Hmm, het leek me interessant om het protocol te leren.. Ik vind dit zelf ook zeer vaag.. Hmm, als ik STOR stuur dan stuurt die daarna meteen terug: 226 File received OK

Heb het met filezilla server geprobeerd.. zelfde effect..
Ik heb mijn project geupload, mischien dat IK iets over het hoofd zie.. Als nu zelfs niemand een oplossing vinden kan, dan zal ik maar de icFTP( internet control.. aight ? ) moeten gebruiken..

www.disney.com

[ Voor 7% gewijzigd door RobIII op 31-12-2006 15:39 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 31 december 2006 @ 11:19:
Ik heb mijn project geupload, mischien dat IK iets over het hoofd zie.. Als nu zelfs niemand een oplossing vinden kan, dan zal ik maar de icFTP( internet control.. aight ? ) moeten gebruiken..

www.disney.com
Je mag zelf je code debuggen; daar doen wij hier niet aan ;)

[ Voor 39% gewijzigd door RobIII op 31-12-2006 15:40 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ehm wat zou er moeten worden gedebugged moeten worden dan ? Krijg toch geen fouten.. Er werkt alleen iets niet.

Ik vraag jullie er ook niet aan te werken maar enkel om het te bekijken en me een schop in de goede richting te geven. Een frisse blik kan wel eens werken.

Maar het ziet ernaar uit dat ik met een internet control aan de gang moet gaan.. :(

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 14:25

Janoz

Moderator Devschuur®

!litemod

Hij doet het toch niet? Dan gaat er dus nog wel iets fout. Dat er geen foutmelding gegeven wordt betekend niet dat er niet een fout in zit.

Waar het om gaat is dat het niet de bedoeling is om je code maar te 'dumpen' en het vervolgens door iemand anders te laten oplossen. Dat is ook wat staat beschreven in het door Rob gegeven linkje. Heb je daarnaast ook al de RFC gedownload? hierin staat exact beschreven hoe het FTP protocol in elkaar zit.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Heb ik voor een groot deel gelezen de RFC, er staat in dat je in PASV moet verbinden naar de FTP server op de gegeven poort die je terug krijgt in de response nadat je PASV hebt gestuurd.. Maar verbinden lukt gewoon niet!

Verwijderd

Topicstarter
Opgelost, moest gewoon verbinding maken nadat ik PASV had gestuurd, ik stuurde eerst PORT maar PORT stelt blijkbaar in dat je jezelf als server opstelt.. Dit zag ik pas in nadat ik een artikel op vbip.com las.
Pagina: 1