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");
        }
    }
}
4

1 回答 1

1

您还没有完全完成请求。您需要两个换行符,否则看起来您仍在写出请求标头。

添加一个额外的println,你可能会没事,虽然 HTTP 指定 CRLF 作为行尾,我实际上会使用print而不是println,并\r\n明确地放在每行的末尾。

(我PrintWriter个人也会避免使用 - 吞咽异常是不好的......)

于 2013-08-04T15:03:57.530 回答