2013-08-04 4 views
1

웹 서버에서 작업하고 있습니다 (완료). 자신 만의 작은 텍스트 기반 브라우저를 만들 것이라고 생각합니다. 유일한 문제는 실제로 브라우저에서 응답을 읽을 수 없다는 것입니다. 코드는 다음과 같습니다.웹 브라우저 명령 행 프로그램

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

class client 
{ 
    static Socket socket = null; 
    static BufferedReader in = null; 
    static PrintWriter out = null; 

    public static void main(String args[]) 
    { 
     int fromServer; 
     try 
     { 
      socket = new Socket("localhost", 8001); 
      in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      out = new PrintWriter(new BufferedOutputStream(socket.getOutputStream())); 
      out.println("GET /Library/WebServer/Documents/index.html.en HTTP/1.0"); 
      out.flush(); 
      while ((fromServer = in.read()) != -1) 
      { 
       System.out.write(fromServer); 
       System.out.flush(); 
      } 

     } 
     catch (UnknownHostException e) 
     { 
      System.out.println("Unknown host"); 
     } 
     catch (IOException e) 
     { 
      System.out.println("IO error"); 
     } 
    } 
} 

답변

1

요청을 완전히 완료하지 않았습니다. 두 개의 개 줄이 필요합니다. 그렇지 않으면 요청 헤더를 계속 쓰는 것처럼 보입니다.

은 추가 println 추가 HTTP가 끝나는 라인 CRLF를 지정, 나는 실제로 println보다는 print을 사용하지만 당신은 , 괜찮을 수 있으며, 명시 적으로 각 라인의 끝에서 \r\n을 넣어.

-

+0

최고 (나는 또한 PrintWriter을 사용하지 않는 것, 개인적으로 예외를 삼키는 것은 ... 나쁜)! 그 덕분에 완벽하게 작동했습니다! – phyrrus9

+0

PrintWriter 대신 무엇을 사용 하시겠습니까? – phyrrus9

관련 문제