У меня возникают некоторые проблемы при написании базового веб-сервера на JAVA.В настоящее время он отлично работает при доставке файлов HTML или CSS.Но когда дело доходит до образов, все запутано.Я предполагаю, что я делаю что-то не так при чтении файлов изображений и подготовке их к отправке.Но взгляните на код:
public void launch()
{
while(true)
{
try
{
Socket connection = this.server_socket.accept();
...
PrintWriter print_writer = new PrintWriter(connection.getOutputStream());
String response = this.readFile(this.request_header.get("Resource"));
print_writer.print(response);
print_writer.flush();
connection.close();
}
catch(...)
{
...
}
}
}
private String readFile(String path)
{
try
{
...
FileInputStream file_input_stream = new FileInputStream(path);
int bytes = file_input_stream.available();
byte[] response_body = new byte[bytes];
file_input_stream.read(response_body);
this.response_body = new String(response_body);
file_input_stream.close();
this.setResponseHeader(200, file_ext);
this.response_header = this.response_header + "\r\n\r\n" + this.response_body;
}
catch(...)
{
...
}
return this.response_header;
}
Так что мой браузер получает что-то вроде:
HTTP/1.0 200 OK
Content-type: image/jpeg
[String that was read in readFile()]
Но Chrome не отображает изображение правильно, и Opera не покажет все это!Раньше я читал файл с помощью BufferedReader, но нашел, что кто-то говорит, что BufferedReader не может правильно обрабатывать двоичные данные, поэтому я попытался с FileInputStream, но проблема осталась прежней):
Спасибо за любые подсказки ипомощь заранее (: