speedi Geschrieben 3. Februar 2009 Geschrieben 3. Februar 2009 Ich muss in ein Programm die Funktionalität einbauen, dass es mir eine Datei von der Festplatte via HTTP bereitstellt. Gibt es irgendwie eine Möglichkeit sich mit JAVA-Boardmitteln einen mini-HTTP-Server zu schreiben, der das macht? Ich möchte einfach, dass ich zu gegebener Zeit dann im Browser "http://localhost:Port/videoname.mpg" eintippen kann und das Video geöffnet wird. Zitieren
speedi Geschrieben 3. Februar 2009 Autor Geschrieben 3. Februar 2009 Update: Hab jetzt mal bisschen rumprobiert: ServerSocket server = new ServerSocket(port); final Socket socket = server.accept(); FileInputStream in = new FileInputStream(file); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); //Ausgabe des Requests: new Thread(){ public void run() { try { InputStreamReader in = new InputStreamReader(socket.getInputStream()); int i; while((i = in.read()) != -1){ System.out.print((char)i); } in.close(); } catch (IOException e) { e.printStackTrace(); } } }.start(); //Senden des Videos byte [] bytes = new byte[1024*1024]; int length = 0; while((length =in.read(bytes, 0, bytes.length)) != -1){ out.write(bytes,0,length); } out.close(); in.close(); Leider reicht es offensichtlich nicht aus, dass Video einfach so rauszuschicken. Weiß jemand was ich vorher noch senden muss um den Client zu informieren was jetzt kommt? Zitieren
Amstelchen Geschrieben 3. Februar 2009 Geschrieben 3. Februar 2009 Weiß jemand was ich vorher noch senden muss um den Client zu informieren was jetzt kommt? "Socket" implementier nur TCP-sockets, aber nicht automatisch das HTTP-protokoll. der bytestream der geschickt wird, enthält zwar die daten im rohformat, allerdings kann ein HTTP-client diese nicht direkt verarbeiten, ohne zumindest die mindestens erforderlichen HTTP-header zu erhalten. so jedenfalls denke ich s'Amstel Zitieren
speedi Geschrieben 4. Februar 2009 Autor Geschrieben 4. Februar 2009 Also ich hab jetzt mal versucht das ganze als HTTP-Server-Response zu implementieren und deshalb vorher folgendes rausgeschickt: outWriter.println("HTTP/1.1 200 OK"); outWriter.println("Server: MyJavaMiniServer"); outWriter.println("Accept-Ranges: bytes"); outWriter.println("Content-Length: 7355500"); outWriter.println("Keep-Alive: timeout=5, max=100"); outWriter.println("Connection: Keep-Alive"); Allerdings funktioniert das immer noch nicht. Zitieren
Krain Geschrieben 7. Februar 2009 Geschrieben 7. Februar 2009 Java 6 - com.sun.net.httpserver Vielleicht hilft der dir bei deinem vorhaben weiter. BR Markus Zitieren
speedi Geschrieben 9. Februar 2009 Autor Geschrieben 9. Februar 2009 Danke! Das schaut echt vielversprechend aus. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.