Entra

View Full Version : [C/C++] Librerie sftp


Spini
19-08-2005, 18:07
Ho un problemino cui non riesco a trovare soluzione da parecchio tempo, e spero che in questo forum qualcuno mi possa aiutare... dimostratevi i migliori :Prrr:
Il problema è davvero semplice: sto scrivendo un'utility che, fondamentalmente, mi permetterà di collegarmi ad un server sftp, scaricare un file, leggerlo, fare tante operazioni, scrivere un altro file e inviare quest'ultimo al server per aggiornarlo. Però è tanto semplice quanto mi resta irrisolto :)
Ho provato un po' di tutto: ho scaricato il sorgente di FileZilla e di parecchi altri client, ma su windows sono un po' pesce fuor d'acqua (veramente ovunque sono pesce fuor d'acqua, ma almeno su Linux le compilazioni sono molto più semplici :) ), e non posso cambiare sistema operativo (il programma lo deve usare anche altra gente, che linux non ce l'ha). Succo del discorso, non sono riuscito ad installarne nemmeno uno per scopiazzare il codice necessario, e, anche ci fossi riuscito, temo di dover copiare una buona metà del codice per soddisfare tutte le chiamate esterne.
Ho provato anche una via meno brutta di scopiazzare codice, cercando librerie un po' ovunque. L'unica che ho trovato è silc, installato con qualche sofferenza (diciamo che chi l'ha creato non aveva proprio in mente di farlo per bene multipiattaforma...), ma non funziona, anche il programma di prova fornito non riesce a risolvere nessun indirizzo, sia esso dato come ip statico o con l'indirizzo "a parole".
Il succo del discorso è: qualcuno sa
a) come scopiazzare codice da un client sftp funzionante
b) come far funzionare silc (e magari perché non va)
c) ben più probabilmente delle altre due, una libreria sftp anche con pochissime funzioni (mi basta lo scambio di file) che funzioni?
Il programma è scritto in un ibrido (peraltro orrendo) di C e C++, quindi mi va bene tanto una libreria C quanto una C++...

Grazie anticipatamente per ogni tentativo di risposta!

anx721
20-08-2005, 13:17
Qualche giorno fa ho provato a fare un esempio di un programmino che si connette a un server ftp e scarica un file in locale. Ho usato la classe wxFTP messa a disposizione della libreria wxWidgets, una libreria multipiattaforma per la costruzione di interfacce grafiche, che possiede anche altre classi, tra cui quella per gestire una connessione FTP, il codice per scaricare un file è il seguente:


void provaFtp(){
wxFTP ftp;
if ( !ftp.Connect("ftp.fox-toolkit.org") ){
wxLogError("Errore: connessione al server non riuscita");
return;
}
else
wxMessageDialog(NULL, "Connesso riuscita !").ShowModal();
ftp.ChDir("/pub");
wxInputStream *in = ftp.GetInputStream("calculator.zip");
if(!in){
wxLogError("Coudln't get file");
}
else{
if(wxTransferStreamToFile(*in, "calculator.zip") == 0)
wxMessageDialog(NULL, "File correttamente trasferito").ShowModal();
else
wxLogError("Errore: file non trasferito");
delete in;
}
}


La libreria puo essere caricata in abbinamento all'editor MinGWDeveloperStudio, che comprende il compilatore mingw che è un porting del gcc su windows, che ti permete di creare un progetto wxWidgets e di compilarlo dall'ide stesso senza alcuna difficoltà. Se hai bisogno di altre info chiedi.

Spini
21-08-2005, 21:04
Innanzi tutto grazie mille per la rapida risposta.
Ancora non ho avuto tempo di provare questa libreria, domani tento, l'unica cosa che vorrei sapere è: quella libreria è anche compatibile con l'sftp? Immagino che abbia quantomeno funzioni dedicate alla connessione sftp, no? E' così intelligente da capire tutto da solo se invece dell'indirizzo di un server ftp gli si passa uno sftp?
Comunque, prendo nota del fatto che lo distribuiscano con mingw, ma purtroppo ho iniziato a programmare l'utility su visual c++, e ormai ci devo restare... lo so, fra tutti ho preso il compilatore peggiore :rolleyes: però mi serviva un'interfaccia grafica veloce da implementare (e scegli il c++, direte voi, ma ero pigro e non avevo voglia di impararmi un linguaggio di più alto livello...). Comunque immagino che non ci saranno problemi per installare quella libreria, visto che mi sembra che ci sia un makefile apposito.

anx721
21-08-2005, 21:34
Mi spiace ma no conosco le caratteristiche del protocollo sftp o cosa lo distingue da ftp...se non son compatibiliallora il mio programma non funzionerà con sftp. Per installare wxwidgets sotto visualc probabilmente hanno già preparato un'area di lavoro che permette di compilare la libreira per visualc.

Spini
22-08-2005, 14:13
L'sftp è soltanto l'ftp attraverso ssh invece che attraverso telnet, almeno a quante ne so... magari funziona con un comando diverso di connessione, proverò...

Grazie ancora!