[VB] InternetCloseHandle - ftp verbinding verbreken

Pagina: 1
Acties:

  • Eastern
  • Registratie: Augustus 2000
  • Laatst online: 24-06 22:21
k'Ben bezig om een programma te maken waarin ook ftp wordt gebruikt. Het lezen en wisselen van directory's ed. gaat goed, alleen wil die nog niet de verbinding verbreken.

code:
1
InternetCloseHandle hOpen

werkt niet. (Voorstaande code) Iemand een idee, of moet ik eerst de complete class ff posten.

Ik werkt met de wininet.dll, dus de Win 32 API. Het is VB6 Professional, en ik wil geen internet transfer control gebruiken omdat die nog vager werkt, en ook op een form moet staan.

[ Voor 30% gewijzigd door Eastern op 17-09-2003 11:10 ]


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

Define "werkt niet", wat gebeurt er (niet) en wat wil je dat er gebeurt? Ik gebruik deze methode ook in een programma van me en het werkt prima.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Eastern
  • Registratie: Augustus 2000
  • Laatst online: 24-06 22:21
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
11:01:03 - (not logged in) (127.0.0.1)> Connected, sending welcome message...
11:01:03 - (not logged in) (127.0.0.1)> USER erik
11:01:03 - (not logged in) (127.0.0.1)> 331 Password required for erik
11:01:03 - (not logged in) (127.0.0.1)> PASS ********
11:01:03 - erik (127.0.0.1)> 230 Logged on
11:01:03 - erik (127.0.0.1)> CWD /V:/data/ftp/msi.zip
11:01:03 - erik (127.0.0.1)> 250 CWD successful. "/V:/data/
ftp/msi.zip" is current directory.
11:01:03 - erik (127.0.0.1)> TYPE A
11:01:03 - erik (127.0.0.1)> 200 Type set to A
11:01:03 - erik (127.0.0.1)> PASV
11:01:03 - erik (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,10,140)
11:01:03 - erik (127.0.0.1)> LIST 5.msi.zip
11:01:03 - erik (127.0.0.1)> 550 Directory not found
11:01:03 - erik (127.0.0.1)> TYPE A
11:01:03 - erik (127.0.0.1)> 200 Type set to A
11:01:03 - erik (127.0.0.1)> PASV
11:01:03 - erik (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,10,142)
11:01:03 - erik (127.0.0.1)> LIST 5.default.zip
11:01:03 - erik (127.0.0.1)> 550 Directory not found
11:01:03 - erik (127.0.0.1)> TYPE A
11:01:03 - erik (127.0.0.1)> 200 Type set to A
11:01:03 - erik (127.0.0.1)> PASV
11:01:03 - erik (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,10,144)
11:01:03 - erik (127.0.0.1)> LIST 5.start.bat
11:01:03 - erik (127.0.0.1)> 550 Directory not found
11:01:03 - erik (127.0.0.1)> TYPE A
11:01:03 - erik (127.0.0.1)> 200 Type set to A
11:01:03 - erik (127.0.0.1)> PASV
11:01:03 - erik (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,10,146)
11:01:03 - erik (127.0.0.1)> LIST 5.stop.bat
11:01:03 - erik (127.0.0.1)> 550 Directory not found
11:03:03 - erik (127.0.0.1)> 421 Connection timed out.
11:03:03 - erik (127.0.0.1)> disconnected.
11:03:03 - erik (127.0.0.1)> could not send reply, disconnected.
11:03:03 - erik (127.0.0.1)> disconnected.


Dit is de logging van de ftp server. Zoals je ziet gaat het disconnecten door een time-out terwijl ik wel een disconnect aanroep in de code. Dat is niet grappig omdat er dan heelveel open sessies ontstaan.

De logging is van FileZilla server op Windows, maar bij Proftpd op Linux komt er ook geen quit in de commandlogging.

[ Voor 31% gewijzigd door Eastern op 17-09-2003 11:16 . Reden: layout ]


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

Close je wel de handle van de ftp sessie? Dus niet die van je hele internet sessie...

Ik close eerst de FTP sessie handle en daarna de Internet sessie handle. Nooit gekeken of hij inderdaad een quit stuurt eigenlijk, maar het is me niet opgevallen dat hij het niet doet.

[ Voor 53% gewijzigd door Gerco op 17-09-2003 11:19 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Eastern
  • Registratie: Augustus 2000
  • Laatst online: 24-06 22:21
Ik doe eerst de ftp handle, daarna de internet handle (hConnection, dan hOpen). Maar geen quit of foutmelding!

Inmiddels heb ik het probleem, heel stom, gevonden:

De declaratie van de functie was zo:

code:
1
2
Private Declare Function InternetCloseHandle Lib "wininet" 
(ByRef hInet As Long) As Long


en moet zo zijn

code:
1
2
Private Declare Function InternetCloseHandle Lib "wininet"
 (ByVal hInet As Long) As Long


Het sturen van byref i.p.v. byval was dus het probleem.

[ Voor 68% gewijzigd door Eastern op 17-09-2003 11:54 . Reden: Antwoord op de vraag 8-) ]