[ftp] Sun FtpClient Verzeichnisse Auflisten

Hallo Zusammen, ich möchte wie der namen Schon Sagt die Verzeichnisse eines Webspace Auflisten. Ich habe folgende Code

            
          
          FtpDirEntry fde; 
          
          root.add(new DefaultMutableTreeNode("test"));
          jTree1.setModel(tm);
          jTree1.repaint();
            
          String host = InetAddress.getByName(jTextField1.getText()).getHostAddress();
          int port = Integer.parseInt(jTextField2.getText());
          SocketAddress sdr = new InetSocketAddress(host,port);
          jTextPane1.setText(jTextPane1.getText() + "Verbinde mit : "  + host + "
");
          
          FtpClient client = FtpClient.create();
          client.connect(sdr);
          client.login(jTextField3.getText(), jPasswordField1.getPassword());
          if(client.isConnected()==true){
          jTextPane1.setText(jTextPane1.getText() + "mit Server Verbunden"+ "
");
          jTextPane1.setText(jTextPane1.getText() + client.getWelcomeMsg() + "
");
 
          jTextPane1.setText(jTextPane1.getText() + "Letzte Datei " + client.getLastFileName() + "
");  
          
 
          String dir=client.getWorkingDirectory();
          client.changeDirectory(dir);
          jTextPane1.setText(jTextPane1.getText()  + "neues Verzwichniss " + client.getWorkingDirectory() + "
");
          
          Iterator<FtpDirEntry> i = client.listFiles(dir);
          LinkedList<String> list = new LinkedList<String>();
          
 
          
          while(i.hasNext()){
                fde = i.next();
                list.add(fde.getName());
                System.out.println(fde.getName());
           }
           
          }
           
          
          
        } catch (UnknownHostException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FtpProtocolException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        }```

und diesen fehler

```Aug 11, 2013 6:47:51 PM ftpuploadapplet.main jButton2ActionPerformed
SEVERE: null
java.net.SocketException: Permission denied: recv failed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
    at sun.net.ftp.impl.FtpClient.readServerResponse(FtpClient.java:421)
    at sun.net.ftp.impl.FtpClient.readReply(FtpClient.java:498)
    at sun.net.ftp.impl.FtpClient.issueCommand(FtpClient.java:533)
    at sun.net.ftp.impl.FtpClient.issueCommandCheck(FtpClient.java:544)
    at sun.net.ftp.impl.FtpClient.openPassiveDataConnection(FtpClient.java:607)
    at sun.net.ftp.impl.FtpClient.openDataConnection(FtpClient.java:710)
    at sun.net.ftp.impl.FtpClient.listFiles(FtpClient.java:1883)
    at ftpuploadapplet.main.jButton2ActionPerformed(main.java:225)
    at ftpuploadapplet.main.access$100(main.java:31)
    at ftpuploadapplet.main$2.actionPerformed(main.java:143)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)```

Danke im Voraus Andy

Auf welche Zeile in Deinem Code wird denn hier verwiesen?

at ftpuploadapplet.main.jButton2ActionPerformed(main.java:225)

PS: wäre nett wenn Du im JF andeuten könntest, das Du die Frage auch in einem anderen Forum gestellt hast…

bye
TT

Hallo, es wird auf dies Verwiesen

Iterator<FtpDirEntry> i = client.listFiles(dir);

vermutlich darfst du in das Verzeichnis dir nicht rein

aber mit Filezilla komme ich rein ?

[QUOTE=Andy16823]Hallo, es wird auf dies Verwiesen

Iterator<FtpDirEntry> i = client.listFiles(dir);[/QUOTE]
Ich vermute mal, dass deise Stelle aus dem Eingangspost das Problem ist:String dir=client.getWorkingDirectory(); client.changeDirectory(dir);Wenn ich das richtig interpretiere holst Du Dir das lokale Arbeitsverzeichnis und setzt es als Pfad im entfernten System. Das sollte in der Tat überdurchschnittlich oft fehl schlagen…

bye
TT

Das war nicht das Problemm, hängt es eventuell daran das ich das über ein JApplet Ausführe

Gruß Andy

Also hab das Jetzt so

            
          
          FtpDirEntry fde; 
          
          root.add(new DefaultMutableTreeNode("test"));
          jTree1.setModel(tm);
          jTree1.repaint();
            
          String host = InetAddress.getByName(jTextField1.getText()).getHostAddress();
          int port = Integer.parseInt(jTextField2.getText());
          SocketAddress sdr = new InetSocketAddress(host,port);
          jTextPane1.setText(jTextPane1.getText() + "Verbinde mit : "  + host + "
");
          
          FtpClient client = FtpClient.create();
          client.connect(sdr);
          client.login(jTextField3.getText(), jPasswordField1.getPassword());
          if(client.isConnected()==true){
          jTextPane1.setText(jTextPane1.getText() + "mit Server Verbunden"+ "
");
          jTextPane1.setText(jTextPane1.getText() + client.getWelcomeMsg() + "
");
 
          jTextPane1.setText(jTextPane1.getText() + "Letzte Datei " + client.getLastFileName() + "
");  
          String dir = client.getWorkingDirectory();
          Iterator<FtpDirEntry> i = client.listFiles(dir);
          LinkedList<String> list = new LinkedList<String>();
          

          
          while(i.hasNext()){
            	fde = i.next();
                list.add(fde.getName());
                System.out.println(fde.getName());
           }
           
          }
           
          
          
        } catch (UnknownHostException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FtpProtocolException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        }```

Der fehler ist nun

```Aug 11, 2013 7:50:26 PM ftpuploadapplet.main jButton2ActionPerformed
SEVERE: null
java.net.SocketException: Permission denied: recv failed
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:150)
	at java.net.SocketInputStream.read(SocketInputStream.java:121)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
	at sun.net.ftp.impl.FtpClient.readServerResponse(FtpClient.java:421)
	at sun.net.ftp.impl.FtpClient.readReply(FtpClient.java:498)
	at sun.net.ftp.impl.FtpClient.issueCommand(FtpClient.java:533)
	at sun.net.ftp.impl.FtpClient.issueCommandCheck(FtpClient.java:544)
	at sun.net.ftp.impl.FtpClient.openPassiveDataConnection(FtpClient.java:607)
	at sun.net.ftp.impl.FtpClient.openDataConnection(FtpClient.java:710)
	at sun.net.ftp.impl.FtpClient.listFiles(FtpClient.java:1883)
	at ftpuploadapplet.main.jButton2ActionPerformed(main.java:225)
	at ftpuploadapplet.main.access$100(main.java:33)
	at ftpuploadapplet.main$2.actionPerformed(main.java:148)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

[QUOTE=Andy16823]Das war nicht das Problemm, hängt es eventuell daran das ich das über ein JApplet Ausführe[/QUOTE]Das kann gut sein. Applets dürfen ja erstmal nicht in das lokale Dateisystem schreiben.

bye
TT

java.net.SocketException: Permission denied: recv failed

Permission denied ist doch eh Aussagekräftig. Entweder du hast falsche Benutzerdaten oder du darfst aus dem Applet heraus keine Netzwerkverbindungen aufbauen (nicht signiert)

[QUOTE=TheDarkRose]

java.net.SocketException: Permission denied: recv failed

Permission denied ist doch eh Aussagekräftig. Entweder du hast falsche Benutzerdaten oder du darfst aus dem Applet heraus keine Netzwerkverbindungen aufbauen (nicht signiert)[/QUOTE]

Signiert ist es nicht wegen dem Applet Viewer :slight_smile:

Also habe es Gerade mal durch das XAMPP Laufen Lassen, da zeigt er mir die Verzeichnisse, das heißt mein Code Funktioniert :smiley:

Grüße Andy

wie wäre es einfach mal den gesamten code zu posten ? paar hundert zeilen sind ja nun kein problem

aber wie schon erwähnt wurde : entweder fehlen dir irgendwo rechte auf dem FTP für bestimmte bereiche , oder die applet-sandbox sperrt sich

Hallo.

Du erhältst ja schon die Antwort des Servers. Der Empfang ist fehlgeschlagen aufgrund mangelnder rechte.

Lass mal das wechseln des Wirkung dir weg.und poste mal bitte auch dein Log. Müsste ja was in der Console stehen dazu, weil du machst ja schon ligausgaben.

Gruß
Martin