PDA

View Full Version : [VB] Log-Out da connessioni FTP


beog
21-01-2004, 13:04
Ormai sarò diventato l'incubo di matpez, però sto lavorando ad un progettone... e non posso mollare ora.
Quindi mi appello a chiunque abbia realizzato programmi VBasic con connessioni FTP.

La connessione mi funge, ma il problema è che alla fine mettendo
InternetCloseHandle(LConnection)
Non sembra fare il log out, perchè dopo 5 volte che premo il pulsante di invio di un file la connessione non funziona più... e fatalità la connessione al mio host sopporta 5 account per volta.

Se aspetto qualche minuto, poi la connessione torna a funzionarre.

Come posso fare?

Grazie, ciao

matpez
21-01-2004, 16:48
Io sinceramente in tutti i programmi di FTP nn ho mai visto il fatidico "log out" ... bho, poi magari esiste!

Cmq se trovo qlc te lo dico! :)

cionci
21-01-2004, 17:15
Perchè non usi una sola connessione che dura dall'inizio alla fine delle operazioni da fare sul server ?

matpez
21-01-2004, 17:31
Originariamente inviato da cionci
Perchè non usi una sola connessione che dura dall'inizio alla fine delle operazioni da fare sul server ?

Si penso anche io...perchè a me ha chiesyo un bottone per uppare un file...ma mi sa che poi lui nn ha portato via la connessione da quel bottone se deve lavaorare + spesso con l'FTP. :)

beog
22-01-2004, 15:38
In pratica io devo sempre uploadare (verdo transitivo !!! ); ) qualcosa da pulsante, però può capitare che le variazioni del testo da mandare siano poche e che quindi gli invii siano più di 5 e piuttosto frequenti.

Come faccio a fare una unica connessione?

E' giusto fare così:

Metto
LOpen ....
lConnection = InternetConnect(lOpen, Host ...
Call rcd .....

quando carica il form

e poi nel pulsante metto solo
FtpPutFile(lConnection, sFi ....

e quando chiudo il programma dovrei fare il:

Call InternetCloseHandle(lConnection)

Giusto?

Però se apro il programma e non mando niente per 10 min e poi devo mandare, la connessione rimane?

Mi potete spiegare un attimo cosa serve la funz "rcd" rispetto alla "FtpPutFile" ?


Grazie

cionci
22-01-2004, 16:20
Quando fai FtpPutFile se il valore che ti ritorna è = 0 allora prova a riaprire la connessione...

Altrimenti studi un metdo simile al keepalive... Metti un timeout..ed ogni 10 secondi invii un comando FTP... Ad esempio FtpGetCurrentDirectory... In questo modo ils erver FTP non ti disconentte mai...

beog
22-01-2004, 16:41
Ah oro!

Ma ho provato a fare:

InternetCloseHandle(nomedell'handle)

Ma mi da: tipo non corrispondente!
Ma de che?

Prima di definire il nomedell'handle con InternetConnection devo dichiararlo con Dim ?

Se lascio la connessione aperta e poi chiudo il programma.. è un prob?

beog
23-01-2004, 11:03
up

beog
23-01-2004, 11:12
Potreste dirmi come faccio a dichiarare le funzioni di Inet e dove trovo le costanti?

Es:

se volessi usare InternetCheckConnection e poi FTPGEtCurrentDirectory come devo fare?
Se mi serve sapere se la connessione fatta con InternetConnection è ancora attiva che comando devo usare?

Grazie, ciao

cionci
23-01-2004, 11:22
Originariamente inviato da beog
Potreste dirmi come faccio a dichiarare le funzioni di Inet e dove trovo le costanti?

Es:

se volessi usare InternetCheckConnection e poi FTPGEtCurrentDirectory come devo fare?
Se mi serve sapere se la connessione fatta con InternetConnection è ancora attiva che comando devo usare?

Grazie, ciao
Scarica API-Guide da www.allapi.net
FTPGEtCurrentDirectory può andar bene per vedere se la conenssione è sempre attiva... Ritorna 0 se la connessione non è più attiva...

beog
23-01-2004, 12:01
ah ok.


Ma come mi ritorna il valore di FTPGetCurr... ?

Esempio:

If FtpGetCurrent(valori,valori,valori) = false then...

roba del genere?

djcuca
23-01-2004, 12:35
Scusa ritornando a prima.. per fare il logout non potresti fare così?

Private Sub cmdDisconnetti_Click()
Inet1.Execute "", "qui il comando Dos per il logout via ftp"
End Sub

?

beog
24-01-2004, 08:31
potrebbe essere, però quel INet1 come lo dichiaro?

Poi ho un'altro dubbio:

io mentre tengo abilitata la connessione FTP col ftpgetcurrentdir.. se dovessi prelevare un file però su HTTP, posso mantenere lo stesso internetOpen?
Andando poi a fare un Internetreadfile via HTTP rischio per diperdere l'altra connessione o lavorano anhe in parallelo?

Grazie , ciao

cionci
24-01-2004, 09:07
Dovrebbe essere sufficiente chiamare una sola volta InternetOpen in tutto il programma...

cionci
24-01-2004, 09:11
Ma InternetCloseHandle su cosa lo chiami ? Lo devi chiamare sull'handle ritornato da InternetConnect... Non è che lo chiami sull'handle di InternetOpen ? Forse è per quello che non ti chiude le connessioni...

Comunque il discorso della connessione persistente è sempre valido...

beog
24-01-2004, 12:29
Sto tentanto una connessione permanete... però non è il max


Si ho capito come si chiude:
hconnection = internetconnet ...
internetclosehandle hconnection

giusto?

cionci
24-01-2004, 12:33
Sì...

beog
24-01-2004, 17:49
eppure ti posso assicurare che dopo 5 volte che premo connetti, la 6a non si connette più e devo asp qualche minuto.

anche se c'è il closehandle

e per quanto riguarda djcuca, qualce codice devo mettere?

grazie, ciao

cionci
25-01-2004, 02:33
Nono...non lo puoi fare come dice lui...