Hi!
Ich würde gerne eine Datei von einem beliebigen Server anfordern und die Antwort die ich vom Server erhalte möchte ich gerne mit meinem Client ausgeben. Leider funktioniert mein Code nicht richtig, ich kriege zwar immer eine Verbindung zu einem Server, das war es dann aber auch, dass Programm terminiert nach einer gewissen Zeit mit einer EOFException.
Die Anfrage nach einer Datei soll in der Kommandozeile stattfinden und so aussehen:
www.uni-protokolle.de 80 get /index.php
Ich weiß nicht wo der Fehler steckt, deshalb hoffe ich hier auf einen guten Hinweis.
Java Code:
[LEFT]
[ol]
[li][FONT=Courier New]import java.io.;[/li][li]import java.net.;[/li][li]import java.util.ArrayList;[/li][li] [/li][li]public class HttpClient {[/li][li] private ObjectInputStream obj_in;[/li][li] private ObjectOutputStream obj_out;[/li][li] [/li][li] public ArrayList sucheDatei(String file) throws ClassNotFoundException {[/li][li] ArrayList liste = new ArrayList();[/li][li] try {[/li][li] obj_out.writeObject(“suchen”);[/li][li] obj_out.writeObject(file);[/li][li] file = (String) obj_in.readObject();[/li][li] [/li][li] liste.addAll(sucheDatei(file));[/li][li] System.out.println(liste);[/li][li] [/li][li] } catch(IOException e) {[/li][li] e.printStackTrace();[/li][li] }[/li][li] return liste;[/li][li] [/li][li] [/li][li] }[/li][li] [/li][li] public void run(String[] args) {[/li][li] final String serverName = args[0];[/li][li] final int port = Integer.parseInt(args[1]);[/li][li] try {[/li][li] Socket theServer = new Socket(InetAddress.getByName(serverName), port);[/li][li] System.out.println("Verbunden mit " + theServer.getInetAddress());[/li][li] [/li][li] obj_out = new ObjectOutputStream(theServer.getOutputStream());[/li][li] obj_in = new ObjectInputStream(theServer.getInputStream());[/li][li] [/li][li] System.out.println([/li][li] "Suche wie folgt eingeben: get ");[/li][li] String cmd = args[2];[/li][li] [/li][li] [/li][li] if (cmd.startsWith("get ")) {[/li][li] String file = args[3];[/li][li] sucheDatei(file);[/li][li] obj_out.writeObject("get " + file);[/li][li] Object obj = obj_in.readObject(); [/li][li] System.out.println(obj + file);[/li][li] }[/li][li] else { [/li][li] System.out.println(“Ungueltiger Befehl”);[/li][li] }[/li][li] [/li][li] System.out.println(“ok”);[/li][li] obj_in.close();[/li][li] obj_out.close();[/li][li] }[/li][li] catch(Exception e) {[/li][li] System.err.println(e);[/li][li] }[/li][li] }[/li][li] public static void main(String[] args) {[/li][li] [/li][li] HttpClient client = new HttpClient();[/li][li] client.run(args);[/li][li] [/li][li] [/li][li] [/li][li] [/li][li] [/li][li] }[/li][li]}[/li][/ol]
[/FONT]
[/LEFT]