2015-08-13 4 views
0

Задайте задачу создания базового HTTP-сервера. Я дошел до того, что он попросит вас отправить текстовый ответ обратно, который должен отображаться в вашем браузере, если вы перейдете на http://localhost:8080/, но я просто получить страницу не может быть показана ошибка. Я думаю, что это должно быть связано с форматом ответа, который я отправляю, но я просто не могу его получить. Любая помощь приветствуется.Браузер не отображает основной ответ HTTP-сервера

import java.net.*; 
import java.io.*; 
import java.util.*; 

class HttpServer{ 
    public static void main(String[] args){ 
     try{ 
      ServerSocket ss = new ServerSocket(8080); 
      while(true){ 
       HttpServerSession sesh = new HttpServerSession(ss.accept()); 
       sesh.start(); 
      } 
     }catch(IOException e){ 
      System.err.println("IOException"); 
     } 
    } 
} 

class HttpServerSession extends Thread { 
    private Socket client; 
    public HttpServerSession(Socket client){ 
     this.client = client; 
    } 

private void println(BufferedOutputStream bos, String s) throws IOException { 
    String news = s + "\r\n"; 
    byte[] array = news.getBytes(); 
    for(int i = 0; i < array.length; i++){ 
     bos.write(array[i]); 
    } 
    return; 
} 

public void run(){ 
    try{ 
     InetAddress clientIP = client.getInetAddress(); 
     System.out.println("We just got a message! " + clientIP.getHostAddress()); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream())); 
     String request = reader.readLine(); 
     System.out.println(request); 
     String[] parts = request.split(" "); 
     if(parts.length == 3){ 
      BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream()); 
      String filename = parts[1].substring(1); 
      if(parts[0].equals("GET")){ 
       while(true){ 
        String line = reader.readLine(); 
        System.out.println(line); 
        if(line == null || line.equals("")){ 
         break; 
        } 
       } 
       println(bos, "OK"); 
       println(bos, ""); 
       println(bos, "Hello World"); 
      } 
     } 
     client.close(); 
    }catch(Exception e){ 
     System.err.println("Exception in thread"); 
    } 
} 

}

+0

Что заголовок выглядеть, что вы посылаете? – ElGavilan

+0

HTTP/1.1 200 OK заменил OK в первом вызове println, но он все еще не работает – LingLang

ответ

0

Оказывается, я просто должен был промывать BufferedOutputStream

Смежные вопросы