Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

getty23

Doppel-As

Dabei seit: 26.03.2003

Beiträge: 109

 

1 Zum Seitenanfang

Freitag, 28. Mai 2004, 21:19

FTP und JAVA

Hi,
ich hab nen kleines Problem mit ftp und Java. Ich hab eine FTP connection mit Java programmiert und das funktioniert alles (wobei ich nicht alles selber geschrieben hab, da ich am Anfang keine Ahnung hatte wie man das ueberhaupt macht). Ich kann also Files uploaden und downloaden und noch so nen paar tolle Sachen.

Mein Problem ist, dass ich einen String an eine File auf dem Server anhaengen will. Also hab ich das mal ausprobiert und hab bekomme immer den Server Code 451, was ja bedeutet das es nicht funktioniert.
Ich habe mein Webspace bei webmasterwork und zwar der alte auf den man mit ftp zugreifen kann.
Hier ist mein Code fiuer das Anhaengen eines Strings an eine File:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
public boolean append(String serverPath, String string) throws IOException, Exception
    {
        
              
        StringBufferInputStream infile = new StringBufferInputStream(string);
        
        boolean success = executeDataCommand("APPE " + serverPath, infile);
        infile.close();
        return success;
        
    }


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public boolean executeDataCommand(String command, InputStream in)
        throws IOException
    {
        // Open a data socket on this computer
        ServerSocket serverSocket = new ServerSocket(0);
        if (!setupDataPort(command, serverSocket))
        {System.out.println("Here is the problem");return false;}
        Socket clientSocket = serverSocket.accept();

        // Transfer the data
        OutputStream out = clientSocket.getOutputStream();
        transferData(in, out);

        // Clean up the data structures
        out.close();
        clientSocket.close();
        serverSocket.close();

        return isSuccessfullResponse(getServerResponseCode());    
    }

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private boolean setupDataPort(String command, ServerSocket server) throws IOException
    {
        
        if(! openPort(server)) return false;
        outStream.println("type i");
        if(! isSuccessfullResponse(getServerResponseCode()))
        {
            error("Could not set Transfer type");
            return false;
        }
        
        outStream.println(command);
        int i = getServerResponseCode();
        System.out.println(i);
        return isInformationalResponse(i);
    }

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private boolean openPort(ServerSocket server) throws IOException
    {
        int localport = server.getLocalPort();
        
        InetAddress inetaddress = server.getInetAddress();
        InetAddress localip;
        
        try
        {
            localip = inetaddress.getLocalHost();
        }
        catch(UnknownHostException e)
        {
            error("Can't get local host");
            return false;
        }
        
        byte[] addrbytes = localip.getAddress();
        short addrshorts[] = new short[4];
        for(int i=0; i<=3; i++)
        {
            addrshorts[i] = addrbytes[i];
            if(addrshorts[i] < 0)
                addrshorts[i] += 256;
        }
        
        outStream.println("port "+addrshorts[0]+","+addrshorts[1]+","+addrshorts[2]+","+addrshorts[3]+","+((localport & 0xff00) >> 8) + "," + (localport & 0x00ff));
        
        return isSuccessfullResponse(getServerResponseCode());
        
    }

Quellcode

1
2
3
4
5
6
7
private void transferData(InputStream in, OutputStream out) throws IOException
    {
        byte b[] = new byte[4096];
        int amount;
        while((amount = in.read(b)) > 0)
            out.write(b, 0, amount);
    }


OK, damit habt ihr den Code fuer das Anhaengen von Strings.
Ihr muesst das ja nicht alles lesen, wenn ihr wisst was die Serverantwort bedeutet und was ich machen muss.
Danke
Da kam das Elfmeterschießen. Wir hatten alle die Hosen voll, aber bei mir lief's ganz flüssig.

sport1000.de
 

Ähnliche Themen