Sehr geehrte Damen und Herren,
Ich habe ein folgendes Problem...
Meine Fragestellung lautet: Erweitern Sie Ihr Client/Server Programm so, dass der Client folgende Ressource vom Server erfragen kann (Punkte 34):
- Client übergibt einen beliebigen Pfad an den Server (z.B. C:/test.txt)
- Server prüft ob diese Datei auf dem Server existiert
- Falls nicht, macht der Server den Client darauf aufmerksam „Datei existiert nicht“
- Falls doch, gibt der Server dem Client den Inhalt dieser Datei zurück.
bis auf alle Punkte habe ich es geschafft, bei mir ist das Problem, dass er die Dateien byte (binär) ausgibt, aber dieser Text muss doch lesbar sein, wer kann mir helfen diesen Text als normaler char auszugeben, oder ne andere Methode wie man das macht!
Hier ist der Quellcode zu client:
Und zu SERVER:
Ich hoffe jemand kann mir helfen !
Ich habe ein folgendes Problem...
Meine Fragestellung lautet: Erweitern Sie Ihr Client/Server Programm so, dass der Client folgende Ressource vom Server erfragen kann (Punkte 34):
- Client übergibt einen beliebigen Pfad an den Server (z.B. C:/test.txt)
- Server prüft ob diese Datei auf dem Server existiert
- Falls nicht, macht der Server den Client darauf aufmerksam „Datei existiert nicht“
- Falls doch, gibt der Server dem Client den Inhalt dieser Datei zurück.
bis auf alle Punkte habe ich es geschafft, bei mir ist das Problem, dass er die Dateien byte (binär) ausgibt, aber dieser Text muss doch lesbar sein, wer kann mir helfen diesen Text als normaler char auszugeben, oder ne andere Methode wie man das macht!
Hier ist der Quellcode zu client:
Code:
package dateianfrage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class fclient {
public static void main(String[] args) throws IOException {
Socket socket = null; // repräsentiert die Verbindung zum Server
BufferedReader in = null; // über dieses Objekt lesen wir die Nachrichten des Servers
PrintWriter out = null; //über dieses Objekt schreiben wir Nachrichten an den Server
String filename = null;
byte[] ausgabe;
try {
socket = new Socket("127.0.0.1", 4711);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
System.out.println("\nBitte den Pfad eingeben(z.B 'C:/dateiname') ");
filename=input.zinput();
out.println(filename);
while ((ausgabe = in.readLine().getBytes()) != null) {
System.out.println(ausgabe);
}
} catch (UnknownHostException e) {
System.err.println("kenne den hostnamen nicht");
System.exit(1);
} catch (IOException e) {
System.err.println("Ich kann leider nichts lesen");
System.exit(1);
}
in.close();
socket.close();
}
}
Und zu SERVER:
Code:
package dateianfrage;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class fserver {
public static void main(String[] args) throws IOException {
try {
String filename = null;
byte[] gelesen = null;
//int gelesen ;
// FileReader r = null;
System.out.println(" Warte auf Verbindung auf Port 4711...");
ServerSocket echod = new ServerSocket(4711);
Socket socket = echod.accept();
System.out.println("Verbindung hergestellt");
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
filename = in.readLine();
if ((filename.startsWith("C:")) || (filename.startsWith("c:"))) {
BufferedReader buf = new BufferedReader(new FileReader(filename));
while ((gelesen = buf.readLine().getBytes()) != null) {
out.println(gelesen);
}
/*while ((gelesen = buf.read()) != -1) {
//System.out.print((char) gelesen);
out.print((char) gelesen);
}*/
} else {
System.out.println("Datei existiert nicht");
}
System.out.println("Verbindung beenden");
socket.close();
echod.close();
} catch (IOException e) {
System.out.println("vom Server: nicht gelesen");
System.err.println(e.toString());
System.exit(1);
}
}
}
Ich hoffe jemand kann mir helfen !