Web浏览器访问socket服务器

浏览器访问socket服务器,想要向浏览器传输一句话,但是浏览器没有任何反应;
服务端接受信息:客户端已连接,IP地址为:0:0:0:0:0:0:0:1
是因为我服务端的请求语句写的不对吗?还是其他原因呢?


public static void main(String[] args) {
        try(
            //将服务端创建在端口8080上
            ServerSocket server = new ServerSocket(8080)){
            System.out.println("正在等待客户端连接...");
            Socket socket = server.accept();
            System.out.println("客户端已连接,IP地址为:"+socket.getInetAddress().getHostAddress());

            //浏览器输入localhost:8080连接本地服务端
            //想要浏览器输出一句话,但是不知道为什么浏览器没有任何反应
            OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream());
            writer.write("HTTP/1.1 200 Accepted\n");
            writer.write("Content-Type:text/html\n");
            writer.write("欢迎~~~~");
            writer.flush();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

该回答引用GPTᴼᴾᴱᴺᴬᴵ,具体如下:
从你的代码上看,你的服务端似乎是尝试向连接到它的客户端发送一些 HTTP 响应头和响应内容,但是这样并不能让浏览器立即显示这些内容。HTTP 是一种基于请求/响应模型的协议,浏览器需要首先向服务器发送一个 HTTP 请求,然后服务器才能响应这个请求并发送 HTTP 响应内容。在这种情况下,浏览器需要向服务器发送一个 HTTP GET 请求,然后服务器才能响应这个请求并返回一些 HTML 内容。

以下是一个简单的示例,演示了如何使用 Java 的 Socket 编写一个最简单的 HTTP 服务器,可以响应浏览器的 HTTP GET 请求,并向浏览器发送一些 HTML 内容。

public static void main(String[] args) {
    try (
        ServerSocket server = new ServerSocket(8080);
    ) {
        System.out.println("服务器已启动,正在等待客户端连接...");

        while (true) {
            Socket socket = server.accept();
            System.out.println("客户端已连接,IP 地址为:" + socket.getInetAddress().getHostAddress());

            // 读取 HTTP 请求内容
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String line = reader.readLine();
            if (line != null) {
                System.out.println(line);
            }

            // 发送 HTTP 响应内容
            PrintWriter writer = new PrintWriter(socket.getOutputStream());
            writer.write("HTTP/1.1 200 OK\n");
            writer.write("Content-Type: text/html\n");
            writer.write("\n");
            writer.write("<html><body><h1>Hello, world!</h1></body></html>");
            writer.flush();

            // 关闭连接
            socket.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

这段代码创建一个 ServerSocket 对象,并在端口 8080 上监听客户端连接。当有客户端连接到服务器时,服务器将读取客户端发送的 HTTP 请求内容,并向客户端发送一个 HTTP 响应,其中包含一些 HTML 内容。在这个例子中,服务器简单地返回一个包含“Hello, world!”的 HTML 页面。

在浏览器中访问该服务器时,只需输入“http://localhost:8080”即可看到服务器响应的内容。请注意,这只是一个非常简单的示例,真正的 HTTP 服务器需要处理更多的请求和响应,并提供更丰富的内容。


如果以上回答对您有所帮助,望采纳~谢谢