Veröffentlicht 3. Februar 200916 j 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.
3. Februar 200916 j Autor 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?
3. Februar 200916 j 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
4. Februar 200916 j Autor 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.
7. Februar 200916 j Java 6 - com.sun.net.httpserver Vielleicht hilft der dir bei deinem vorhaben weiter. BR Markus
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.