Как отправить файл htm в сокет? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь отправить этот htm-файл в веб-браузер, чтобы браузер отображал содержимое файла.Когда я запускаю свой код, все, что происходит, - это браузер отображает имя htm-файла и ничего больше.

try 
    {
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        String input = in.readLine();

        while (!input.isEmpty()) 
        {
            System.out.println("\tserver read a line: " + input);
            input = in.readLine();
        }

        System.out.println("");

        File myFile = new File ("hello.htm");

        out.println("HTTP/1.1 200 OK");
        out.println("Content-Type: text/html");
        out.println("\r\n");
        out.write(myFile);
        out.flush();
        out.close();
    }

    catch(Exception e)
    {
        System.out.println("\ncaught exeception: " + e + "\n");
    }

1 Ответ

0 голосов
/ 11 февраля 2019

На самом деле вам нужно записать содержимое файла в поток:

...
BufferedReader in2 = new BufferedReader(new FileReader(myFile));
out.write("HTTP/1.1 200 OK\r\n");
out.write("Content-Type: text/html\r\n");
//Tell the end user how much data you are sending
out.write("Content-Length: " + myFile.length() + "\r\n");
//Indicates end of headers
out.write("\r\n");
String line;
while((line = in2.readLine()) != null) {
    //Not sure if you should use out.println or out.write, play around with it.
    out.write(line + "\r\n");
}
//out.write(myFile); Remove this
out.flush();
out.close();
...

Приведенный выше код - всего лишь представление о том, что вы действительно должны делать.Он учитывает протокол HTTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...