Webserver - Bild senden

Status
Nicht offen für weitere Antworten.

ateves

Neues Mitglied
hi!
ich bin recht neu in java und hab nun versucht einen alten, in purebasic geschriebenen webserver in java umzusetzen. ich hab erstmal feste dateien genommen ohne auf GET commands zu achten. mit der eigenlichen HTML seite geht es auch ganz wunderbar, nur auf der seite befindet sich ein bild. nun habe ich versucht, das bild genau wie die HTML daten zu lesen und zu senden, was aber nicht klappt. nun weiss ich nicht welche form von stream ich für die bilddaten verwenden sollte (bzw. ob die auslesefunktion richtig ist in diesem fall). hier der code:

Code:
import java.io.*;
import java.net.*;

public class Server
{
    public static void main(String args[]) throws IOException
    {
        ServerSocket server = new ServerSocket(80);
        
        while(true)
        {
            Socket session  = server.accept();
            int ID          = 0;
            
            PrintStream     out     = new PrintStream(session.getOutputStream());
            BufferedReader  in      = new BufferedReader(new InputStreamReader(session.getInputStream()));
            FileInputStream file    = new FileInputStream("index.html");
            FileInputStream image   = new FileInputStream("index_dateien/logo.gif");
            
            out.print("HTTP/1.0 200 OK\r\n");
            out.print("Server: ExperimentalWebServer 0.5\r\n");
            out.print("Content-type: text/html\r\n\r\n");
            
            for(int c; (c = file.read()) != -1;)
            {
                out.write(c);
            }
            
            for(int d; (d = image.read()) != -1;)
            {
                out.write(d);
            }
        }
    }
}

hat jemand einen guten tipp?
 

Nick H.

Bekanntes Mitglied
wie soll das denn funktionieren?
ich glaub du misverstehst da was
wenn in einer HTML-Seite ein Bild enthalten ist
brauchst du das gar nicht beachten

der Client (also der Browser) vordert sobald er die HTML-Seite hat alle dazugehörigen Bilder nochmal extra an
und bei dir bekommt er ja einfach nochmal die HTML Seite

ausserdem hast du ja auf Content-Type text/html gestellt
das muss dann aber auf image/gif
mit einem neuen Header gesendet werden
sobald der Browser das Bild anfordert
 

uNiKoMpLeX

Mitglied
Um Mime-Typen recht flexibel in deinem Webserver zu intregrieren, könntest du eine statische Klasse mit einer HashMap erstellen. Sie werden dann ausgelesen. Sollte der Mime-Typ nicht in der HashMap definiert sein, wird ein allgemeiner Mime-Type ausgegeben (Methode getMimeType()).

Code:
public final class MimeTypes
{
    private static HashMap<String,String>MimeType=new HashMap<String,String>(9);
    
    static
    {
        MimeType.put("html","text/html");
        MimeType.put("htm","text/html");
        MimeType.put("gif","image/gif");
        MimeType.put("jpg","image/jpeg");
        MimeType.put("jpeg","image/jpeg");
        MimeType.put("txt","text/plain");
        MimeType.put("css","text/css");
        MimeType.put("mp3","audio/mpeg");
    };
    
    public MimeTypes(){}
    
    public String getMimeType(String uri)
    {
        uri=uri.toLowerCase();
        uri=(String)MimeType.get(uri);
        if(uri==null)uri="text/html";  // Sollte der Mime-Type nicht vorhanden sein, gebe einen Standard-Mime an.
        return uri;  
    }
}


Mit ein paar Änderungen an deinem WebServer könntest du dann die Klasse MimeTypes implementieren:

Code:
import java.io.*;
import java.net.*;

import java.util.HashMap;

public class Server
{
    private static final MimeTypes types=new MimeTypes();

    public static void main(String args[]) throws IOException
    {
        ServerSocket server = new ServerSocket(80);
       
        while(true)
        {
            Socket session  = server.accept();
            int ID          = 0;

            String url ="index_dateien/logo.gif";

            PrintStream     out     = new PrintStream(session.getOutputStream()); 
            BufferedReader  in      = new BufferedReader(new InputStreamReader(session.getInputStream()));

            FileInputStream image   = new FileInputStream(url);
           
            out.print("HTTP/1.0 200 OK\r\n");
            out.print("Server: ExperimentalWebServer 0.5\r\n");
            out.print("Content-type: "+types.getMimeType(url.substring((url.indexOf(".")+1)))+"\r\n\r\n");
           
           
            for(int d; (d = image.read()) != -1;)
            {
                out.write(d);
            }
        }
    }
}

Den Dateienamen solltest du über die args-Variable auch definieren können!

Lg Daniel[/code]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
S Socket Webserver mit SSLSocket geht nicht Netzwerkprogrammierung 1
B HTML mit Webserver und Datenbank verbinden Netzwerkprogrammierung 2
Z Debug-Info einer JavaSE Applikation auf Webserver Netzwerkprogrammierung 0
K Webserver mit Ethernet-Device verbinden Netzwerkprogrammierung 0
S Webserver für Jar File Netzwerkprogrammierung 4
F Java App mit Webserver Netzwerkprogrammierung 4
L Webserver pingen Netzwerkprogrammierung 5
Semox HTTP Webserver: Externe Dateien werden nicht verwendet. Netzwerkprogrammierung 10
TiME-SPLiNTER HTTP User Authentication: Java Client -> Webserver Netzwerkprogrammierung 7
Semox Socket Selbstgeschriebenen Webserver im lokalen Netzwerk publizieren? Netzwerkprogrammierung 4
I HTTP Grundlagen um einen Webserver zu erstellen Netzwerkprogrammierung 17
L Javaprogramm auf Webserver Netzwerkprogrammierung 5
M Java-Programm als Webserver erzeugt HTML Netzwerkprogrammierung 8
S Verständnisproblem concurrent - iterativer Webserver Netzwerkprogrammierung 2
D "FileChooser" auf einem Webserver Netzwerkprogrammierung 5
F Empfehlung für embedded Webserver Netzwerkprogrammierung 10
F Webserver Zugriff per Java Netzwerkprogrammierung 3
sparrow Connection Reset bei Webserver, Java WebStart als Client Netzwerkprogrammierung 9
H Webserver mit PHP als Java-Programm, gibt es schon so etwas? Netzwerkprogrammierung 12
C Socketkommunikation mit Webserver Netzwerkprogrammierung 5
J Webserver auf einem Pocket PC Netzwerkprogrammierung 2
M sessionhandling beim webserver Netzwerkprogrammierung 5
B Laden einer *.csv Datei von einem Webserver (http-request) Netzwerkprogrammierung 8
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
M bild von einer url erzeugen Netzwerkprogrammierung 7
A HTTP Bild downloaden Netzwerkprogrammierung 3
J HTTP Bild an Client schicken mit com.sun.net.httpserver Netzwerkprogrammierung 5
S Bild-Datei von Servlet an Browser senden Netzwerkprogrammierung 8
G Bild URL über ImageIO.read Netzwerkprogrammierung 8
G Bild aus PHP-seite speichern Netzwerkprogrammierung 7
OnDemand Daten per API senden, parallel Netzwerkprogrammierung 9
M Socket Senden an alle verbundenen Clients Netzwerkprogrammierung 3
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
E Socket Befehl senden und antowrt bekommen ! Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
L Strings an Server senden und in MYSQL speichern? Netzwerkprogrammierung 3
L Socket Nachrichten senden Netzwerkprogrammierung 3
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
M Socket Bilder senden Netzwerkprogrammierung 1
H HTTP REST Jersey - PUT-Beispiel von Client senden Netzwerkprogrammierung 0
W Socket Byte Array senden Netzwerkprogrammierung 2
G Mail senden funktioniert nicht mit SSL Netzwerkprogrammierung 7
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
X UDP - Zu großes Paket senden Netzwerkprogrammierung 1
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
M Teilnehmerliste vom Server auch an alle Clients senden Netzwerkprogrammierung 0
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
I Kleine Dateien senden Netzwerkprogrammierung 3
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
S Server-Client: Image senden Netzwerkprogrammierung 2
B Socket BufferedImage senden "ohne speichern" Netzwerkprogrammierung 7
P Socket Daten senden mit ServerSocket? Netzwerkprogrammierung 2
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
K Socket Senden und abspeichern Netzwerkprogrammierung 34
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
D Strings per Schleife zum Client senden Netzwerkprogrammierung 4
D daten per post senden Netzwerkprogrammierung 3
M Senden von Daten nicht direkt möglich? Netzwerkprogrammierung 6
B SSH mit Jsch, mehrere Befehle senden Netzwerkprogrammierung 4
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
F Verschiedene Datentypen senden Netzwerkprogrammierung 4
M Befehle an externes Java-Programm senden Netzwerkprogrammierung 8
1 Datei senden/empfangen funzt nicht... Netzwerkprogrammierung 5
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
Weltall 7 HTTP Dateien an PHP-Skript senden Netzwerkprogrammierung 11
T Outputstream Byte-Array senden Netzwerkprogrammierung 2
N Senden eines Arrays Netzwerkprogrammierung 6
F Char über Netzwerk senden Netzwerkprogrammierung 6
C Befehle über ein GUI an Server senden Netzwerkprogrammierung 15
J Befehle an Server senden Netzwerkprogrammierung 5
L Zeitspanne für erneutes senden Netzwerkprogrammierung 16
Kr0e Ggf. Performanceproblem durch Senden von vielen kleinen Buffern Netzwerkprogrammierung 17
S Socket OutputStreams senden zu oft Netzwerkprogrammierung 6
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
F Erhalten und Senden von Nachrichten anhand des Indexes des Clients Netzwerkprogrammierung 19
Akrillo Datei per Netzwerk senden Netzwerkprogrammierung 10
KeNnY_tHe_OwNeR Empfangen geht, Senden nicht ?! Netzwerkprogrammierung 18
B Befehle an Gameserver senden bzw. empfangen Netzwerkprogrammierung 2
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
T HttpClient - Senden via Post Netzwerkprogrammierung 12
Q Datein von Windows nach Mac senden Netzwerkprogrammierung 4
M Dateien über TCP/IP senden Netzwerkprogrammierung 18
Q NullPointExeption beim Versuch byte[] zu senden/writen Netzwerkprogrammierung 3
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
R Mehrere Dateien über einen Socket senden Netzwerkprogrammierung 2
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
G Information an Server senden? Netzwerkprogrammierung 4
D PDF und integer senden Netzwerkprogrammierung 6
M BufferedImage an PHP-Script senden Netzwerkprogrammierung 4
J Problem beim Senden von File Netzwerkprogrammierung 4
S String[] über Socket senden Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben