|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
[JAVA] LIST per FTP Server
Ciao Ragazzi, ho bisogno sul serio di un vostro consiglio. Ho quasi terminato la realizzazione di un server FTP secondo le rfc 959. C'è solo una cosa che non riesco a fare...
Quando il server riceve un LIST, invia il contenuto della directory locale al client. Ho assoluto bisogno di sapere come produrre in java un listato simile a questo: Codice:
drwxrwxr-x 2 root bin 7168 Mar 18 05:13 . drwxrwxr-x 25 root sys 1024 Jan 7 09:16 .. -r-sr-xr-x 1 root bin 32868 Jan 29 05:13 login -r-xr-xr-x 1 bin bin 17500 Oct 25 1995 ls -r-x--s--x 1 bin mail 66208 Jan 6 20:16 mail Grazie mille.. spero che mi aiutiate a risolvere il problema! |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...mh...penso tu debba ricreartelo esegundo per ogni file comandi come MDTM e SIZE...
...ciao... |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
ciao, grazie x il supporto innanzi tutto..
per favore potresti essere un po' più preciso che non conosco tali sistemi??? |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...ci sono diversi modi per interfacciarsi ad un FTP da java...l'idea di base è quella di creare una connessione e due stream per dialogare con il server...
Codice:
try { URL url = new URL("ftp://user:password@ftp.dominio.com"); URLConnection urlc = url.openConnection(); InputStream is = urlc.getInputStream(); OutputStream os = urlc.getOutputStream(); } catch (Exception e) { e.printStackTrace(); } Codice:
* ABOR - abort a file transfer * CWD - change working directory * DELE - delete a remote file * LIST - list remote files * MDTM - return the modification time of a file * MKD - make a remote directory * NLST - name list of remote directory * PASS - send password * PASV - enter passive mode * PORT - open a data port * PWD - print working directory * QUIT - terminate the connection * RETR - retrieve a remote file * RMD - remove a remote directory * RNFR - rename from * RNTO - rename to * SITE - site-specific commands * SIZE - return the size of a file * STOR - store a file on the remote host * TYPE - set transfer type * USER - send username ...domani se riesco ti posto qualcosa di piu' concreto... ...ciao... |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
Ciao! grazie, vedo che ti sei impegnato a rispondermi....
volevo dirti innanzitutto che non è necessario che mi spieghi la parte di networking.. E' già tutto realizzato e pienamente funzionante. Ho implementato sia un client che un server ftp. L'unico fatto è che quando arriva una richiesta di tipo LIST al server, quest'ultimo dovrebbe spedire un listato dei files al client. OK, fin quì ci siamo. Il mio problema è: dato che il metodo list() della classe File nel package java.io restituisce la semplice lista dei files contenuti nella directory specificata, a me serve un listato un po' più sofisticato. Conosco le RFC 959, e i vari comandi del protocollo. Sto realizzando il lato server ed ho bisogno di mandare al client che mi fa un LIST una lista di files che è l'equivalente di un ls -al unix, che faccia vedere TUTTI gli attributi di un file o di una directory. Suppongo, anzi sono certo che questo problema prescinda dal protocollo FTP. Quindi mi basterebbe un semplice metodo main che lanciato da una directory (la sua classe chiaramente) mi restituisca un ls -al anche se lo lancio da windows. Chiedo questo poichè provando dei comuni server ftp scaricabili in prova da internet, come x esempio UServ-FTP server, alla ricezione del comando LIST (dir se parliamo in termini di client ftp di windows) spedice un ls -al della dir attuale. Posso immaginare che tale software sia scritto in c o in c++ o in chissà quale altro linguaggio, ma perchè in java non posso simulare un ls -al unix???? Spero esista un sistema. Spero di essere stato un po' più chiaro ora... Grazie infinite... PS: se devo crearmelo da solo... mi armo di pazienza.... |
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...ok quindi stai cercando un modo...anche da locale...di eseguire comandi da shell e ricavarne l'output?...se è così interesserebbe anche a me...
...la soluzione dovrebbe essere circa così... Codice:
{ Runtime r = Runtime.getRuntime(); String cmd = "comando"; Process prc = r.exec(cmd); BufferedReader is = new BufferedReader(new InputStreamReader(prc.getInputStream())); String line; while ((line = is.readLine()) != null) System.out.println(line); } |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
MI serve un ls -al UNIX. Anche da Winsozz..
|
![]() |
![]() |
![]() |
#9 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...l'ultimo stralcio di codice da me postato puo' eseguire tale funzione...ma da locale... ...ciao... |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
OK! grazie... ma devo cambiare qualcosa?
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
In questo modo lui si deve prendere l'output del comando (un attrib avrà un output diverso da ls -la) e rileaborarselo... Ricordatevi che in Windows gli attributi non sono come quelli di Linux, ma devono essere rielaborati... IMHO è sempre una brutta abitudine prendere l'output di un comando...in qualsiasi linguaggio o sistema operativo... Poi soprattutto in Java che dovrebbe essere portabile...
Non basta usare un funzione che ottiene gli attributi di un file e dopo applicarla a tutti i file ? |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
ally: ho provato a fare come dici.. non ci riesco però:
ecco la classe: Codice:
import java.io.*; public class List { public static void main(String[] args) throws IOException{ Runtime r = Runtime.getRuntime(); String cmd = "comando"; Process prc = r.exec(cmd); BufferedReader is = new BufferedReader(new InputStreamReader(prc.getInputStream())); String line; while ((line = is.readLine()) != null) System.out.println(line); } } Exception in thread "main" java.io.IOException: CreateProcess: comando error=2 at java.lang.Win32Process.create(Native Method) at java.lang.Win32Process.<init>(Win32Process.java:66) at java.lang.Runtime.execInternal(Native Method) at java.lang.Runtime.exec(Runtime.java:566) at java.lang.Runtime.exec(Runtime.java:428) at java.lang.Runtime.exec(Runtime.java:364) at java.lang.Runtime.exec(Runtime.java:326) at List.main(List.java:7) |
![]() |
![]() |
![]() |
#13 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...mh...mi dispiace...domani ricontrollo...
...ciao... |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Grazie per avermi ignorato
![]() |
![]() |
![]() |
![]() |
#15 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...beh è in parte cio' che avevo consigliato all'inizio...usando comandi specifici ftp per ricostruire le proprietà del file...il problema è capire se questa cosa deve essere fatta da remoto o da locale... ...ciao... |
|
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Questi sono i permessi su quel file per la sua applicazione...e di fatto gli altri basta simularli... Anche perchè non credo che lui voglia creare "Gruppi" sul suo FTP server... Se li vuoi usare allora devi passare a creare un virtual file system per cui nella configurazione del FTP server verrano specificati i tipi di accesso a tutti, gruppo e utente per quelal directory...un po' come fa WarFTP Server... |
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
cionci: grazie per questo link che mi hai mandato... vedo subito di che si tratta!!!
Quindi in pratica per questa classe io posso ottenere quei famosi attributi -xwr-ww-w ecc... x i files dwr ecc... per le dir? Ultima modifica di fbcyborg : 21-07-2005 alle 08:00. |
![]() |
![]() |
![]() |
#18 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...ottimo...non conoscevo questa classe...
...ciao... |
![]() |
![]() |
![]() |
#19 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...il problema dovrebbe essere legato al comando da lanciare... ...String cmd = "cmd /c dir"; ...così lancia il comando dir dal path del programma... ...ciao... |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ottieni solo gli attributi per il tuo programma...gli altri devi simularli... Ad esempio mettendoli sempre a 1...
Per la dir...io non mi intendo per niente di Java comunque se credo che non impossibile da trovare... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:46.