Problem mit dem schreiben von Datein auf einem Server

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
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:
Code:
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)
 
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.
 
Aha. Gibt es denn Programme für eine Dateiverwaltung auf einem Server, die ich auch mit einer Server-Socket-Verbindung erreichen kann???
 
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.
 
Möchte mal zwei Varianten anbieten um Dateien auf einen Server zu schreiben:

Code:
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
Code:
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...
 
Anonymous hat gesagt.:
Code:
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:
 
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.
 
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...
 
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:
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.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben