# Problem mit dem schreiben von Datein auf einem Server



## Guest (28. Okt 2006)

Ich möchte eine Datei schreiben können, die auf einem Server liegt (mit nem Applet auf dem Server). Die Datei kann ich ohne Probleme lesen aber der gibt folgende Fehlermeldung beim schreiben:

```
java.net.UnknownServiceException: protocol doesn't support output
	at java.net.URLConnection.getOutputStream(URLConnection.java:785)
	at main.LogIn.AddUser(LogIn.java:199)
	at main.LogIn.actionPerformed(LogIn.java:158)
	at java.awt.Button.processActionEvent(Button.java:388)
	at java.awt.Button.processEvent(Button.java:356)
	at java.awt.Component.dispatchEventImpl(Component.java:3955)
	at java.awt.Component.dispatchEvent(Component.java:3803)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
```


----------



## Leroy42 (30. Okt 2006)

Das geht so aus Sicherheitsgründen auch nicht.

Stell dir vor einer analysiert deinen Applet Code verändert ihn und fängt
dann an wie wild auf deinem Server herumzufuhrwerken; das liegt mit
Sicherheit nicht unbedingt in deinem Interesse.

Du kannst einzig und allein dein Applet eine Socket-Verbindung zu 
einem Server-*Programm* aufbauen lassen, das dann diese
Datei schreibt.

Nur so bleibt es in der Verantwortung des Servers dort
Dateien zu verändern/löschen/erzeugen.


----------



## Illuminatus0301 (4. Nov 2006)

Aha. Gibt es denn Programme für eine Dateiverwaltung auf einem Server, die ich auch mit einer Server-Socket-Verbindung erreichen kann???


----------



## Leroy42 (4. Nov 2006)

Illuminatus0301 hat gesagt.:
			
		

> Aha. Gibt es denn Programme für eine Dateiverwaltung auf einem Server, die ich auch mit einer Server-Socket-Verbindung erreichen kann???



Wohl weniger. Weil es keine übliche Anwendung ist von einem Applet aus auf
dem Server Dateiverwaltung zu betreiben.

2 Möglichkeiten: 

1) Schreib dir ein eigenes Programm das auf dem Server läuft und mit den Applet(s) kommuniziert.

2) Besorg dir eine fertige Java-FTP-Client library (gibts wie Sand am Meer). Voraussetzung:
    Dein Server bietet FTP an.


----------



## Illuminatus0301 (5. Nov 2006)

Welches Programm kann ich denn benutzten???


----------



## Leroy42 (6. Nov 2006)

Illuminatus0301 hat gesagt.:
			
		

> Welches *Programm* kann ich denn benutzten???


javac


----------



## Guest (7. Nov 2006)

Möchte mal zwei Varianten anbieten um Dateien auf einen Server zu schreiben:


```
try {
    URL url = new URL(getThis().getDocumentBase(), "optionen.ini");
    URLConnection con = url.openConnection();
   
    con.setDoOutput(true);
						
    //Variante 1   
    con.getOutputStream().write(65);
    con.getOutputStream().flush();

    //Variante 2						
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(con.getOutputStream()));
    writer.write("option=wert");
    writer.flush();
    writer.close();


    
    BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));		
    System.out.println(br.readLine());

} catch (Exception exception) {
    System.out.println(exception.toString());
}
```


Also das mit dem Lesen vom Server haut gut hin.
Auf Basis dessen hab ich versucht eine Schreibmethode zu programmieren.

Aber da steckt noch der Wurm drin. Es gibt zwar keine Fehlermeldung, aber schreiben tut er trotzdem nichts!

Vielleicht kann ja einer weiterhelfen...

PS

Die Meldung

```
java.net.UnknownServiceException: protocol doesn't support output
```

bekomme ich wenn ich das Applet in Eclipse starte.
Wenn das Applet (signiert) auf dem Server läuft kommt keine Fehlermeldung mehr...


----------



## Leroy42 (7. Nov 2006)

Anonymous hat gesagt.:
			
		

> ```
> java.net.UnknownServiceException: protocol doesn't support output
> ```
> bekomme ich wenn ich das Applet in Eclipse starte.



Das ist doch genau das, was wir dir die ganze Zeit versuchen zu erklären.

*protocol doesn't support output*

Im Klartext: Das http-Protokoll (bzw. Socket-Protokoll) *unterstützt keine* Ausgabe!

Du kannst eben nicht so einfach etwas auf dem Server schreiben.


			
				Anonymous hat gesagt.:
			
		

> Aber da steckt noch der Wurm drin


Das ist kein Wurm; es geht einfach nicht.

Ein Auto *kann* eben nicht fliegen.




			
				Anonymous hat gesagt.:
			
		

> Wenn das Applet (signiert) auf dem Server läuft kommt keine Fehlermeldung mehr...



 :shock: Ein Applet läuft nicht auf dem Server  :autsch:


----------



## LoN_Nemesis (7. Nov 2006)

Ich hab es selbst noch nicht probiert, aber wenn dein Server PHP überstützt, dann kannst du dein Applet mit einem PHP Skript kommunizieren lassen, welches dann deine Daten für dich schreibt. Such mal hier im Forum oder bei Google danach.


----------



## Rex ;) (7. Nov 2006)

Da ich (wir  ) mal einen Uploader programmiert habe, kann ich Dir diese Klasse nur wärmstens empfehlen:

http://www.devx.com/Java/Article/17679/1954?pf=true


MFG
Rex


----------



## Guest (8. Nov 2006)

ja, natürlich,

meinte nicht, das es auf dem Server läuft, sondern das ich die signierte Jar auf den Server spiele und dann 
das Applet auf meinem Client ausführe kommt keine Fehlermeldung.

Der Code scheint also OK, vielleicht liegts auch daran:



> The flush method of OutputStream does nothing.



(Auszug aus der Java API)

Vielleicht schreibt er deswegen nichts...


----------



## Illuminatus0301 (11. Nov 2006)

Also: Ich hab jetzt mal mit dem org.apache.common.net.ftp package mein Programm umgeschrieben. Das Lesen geht auch ohne Probleme, doch obwohl ich auf meinem (noch) localem FTP-Server dem User, mit dem ich auf den FTP connecte erlaub hab alles mit den Datein die in dem Pfad liegen zu machen (Lesen, Schreiben, Hinzufügen, Löschen), gibt der FTPClient nur null als OutputStream wieder!
Hier der Code:

```
FTPClient ftp = new FTPClient();
ftp.connect(Host-IP);
ftp.login(Username, Userpassword);
String file = Datei-Pfad;

//Lesen der Datei
			
ftp.deleteFile(file); //<--Die Zeile kann weggelassen werden, das Ergebniss ist das gleiche
OutputStream os = ftp.appendFileStream(file);
OutputStreamWriter osw = new OutputStreamWriter(os); //<---Für diese Zeile bekomm ich eine NullPointerEception
BufferedWriter bw = new BufferedWriter(osw);
		
//Schreiben der oben elgelesenden Informationen und der neuen Inforationen
	
ftp.logout();
```

P.S.: Weiß nicht wie ich das mit "ftp.irgendwas" hinbekommen, ohne dass ein Link entsteht.


----------

