PDA

View Full Version : TFTP.....come si fa?


clatlof
16-02-2007, 22:09
Buona sera! Ho necessità di usare il protoccollo tftp all'interno di un programma vb6! Visto che internet ci sono solo una marea di ocx a pagamento mi chiedevo se non ci fosse un'altro modo per poter utilizzare il protocollo....non so magari attraverso le api o altro....dll di windows.....

Quindi come posso usare l'tftp in un progetto visual basic?

cionci
17-02-2007, 11:29
Devi implementarlo a tutti i costi in VB ? Non ti basta richiamare il client di Windows dall'applicazione VB ?

clatlof
17-02-2007, 13:09
Si mi serve implementarlo... tu cosa intendevi usare la shell....???

esempio:

shell "tftp -i indirizzo ip Get/put nome file"

Così andrebbe anche bene ma siccome nel programma dopo aver scaricato dei file dal modem (sto facendo un programma per un modem adsl) devo fare delle altre operazioni mi serve sapere se il trasferimento è avvenuto o no!!! Ammeno che tu non mi suggerisca un modo con la quale l'applicazione dos dialoga con quella vb e mi dica che abbia finito (un po come il passaggio per riferimento!)

Comunque se non intendevi la shell dimmi cosa intendevi... magari va bene... per il resto ovviamente sarebbe meglio implementarlo direttamente....ma se uno non vuole fare lavoro bisogna pagare perchè tutti gli ocx sono a pagamento!

Comunque... non c'è il modo di usare qualche libreria di windows....

Aspetto soluzioni ... grazie!

cionci
17-02-2007, 13:29
Sì intendevo qualcosa di simile... Per sapere come è andato il trasferimento puoi redirigere l'output su un file:

tftp -i indirizzo ip Get/put nome file > out.txt

Per sapere quando ha finito puoi usare le API di Windows...
Lanci il comando TFTP tramite CreateProcess e aspetti la terminazione con WaitForSingleObject...

Public Sub ExecuteAndWait(cmdline As String)
Dim NameOfProc As PROCESS_INFORMATION
Dim NameStart As STARTUPINFO
Dim X As Long
NameStart.cb = Len(NameStart)
X = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, NameStart, NameOfProc)
X = WaitForSingleObject(NameOfProc.hProcess, INFINITE)
X = CloseHandle(NameOfProc.hProcess)
End Sub

Ovviamente devi importare le API e le strutture dati in VB...
Se vuoi sapere come fare ad importare le API necessarie scarica questo: http://www.programarsiv.net/DownloadDetail/?pk1=&pk2=3808&pk3=API-Guide
Spero che sia l'API-Guide che intendo io perché il sito ufficiale non è più registrato ed ora sono su Linux e non lo posso provare.