gpt4 book ai didi

Java简单服务器错误

转载 作者:行者123 更新时间:2023-12-02 00:30:05 25 4
gpt4 key购买 nike

几个小时前我开始学习java套接字通信。现在我正在尝试制作服务器应用程序,该应用程序应该将数据返回到网络浏览器。我的代码:

try{
ServerSocket socket = new ServerSocket(80);
Socket response = socket.accept();
String lol = "<html>hi</html>";
OutputStream str = response.getOutputStream();
str.write(lol.getBytes("US-ASCII"));
str.flush();
response.close();
System.out.println("LOL works!");
}catch(IOException ex)
{
System.out.println(ex.toString());
}
}

我的服务器应用程序没有错误,消息“LOL Works!!!”在控制台中打印,但在网络浏览器中我收到此错误:

My error.

有人知道如何修复它并在网络浏览器中获取文本“hi”吗?谢谢。

编辑:我尝试将其添加到 telnet 中。这是结果: Telnet result

最佳答案

您不能只是将原始数据发送到浏览器并期望它处理它 - 您必须遵循 RFC1945 中描述的 HTTP(协议(protocol)) .

具体来说,您必须先发送几个 header ,然后再发送一个新行,如 RFC1945 第 4.1 节中所述。

try{
ServerSocket socket = new ServerSocket(80);
Socket response = socket.accept();
String lol = "<html>hi</html>";
writer = new PrintStream(response.getOutputStream());
writer.println("HTTP/1.1 200 OK");
writer.println("Content-Type: text/html");
writer.println();
writer.println(lol);
writer.flush();
response.close();
System.out.println("LOL works!");
}catch(IOException e)
{
e.printStackTrace();
}
}

请注意,我还将您的 OutputStream 包装在 PrintStream 中,因为这比手动处理 OutputStream 容易得多。

关于Java简单服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9250097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com