誰想 2023-03-22 17:25 采纳率: 95.1%
浏览 11
已结题

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();
        }
    }
  • 写回答

1条回答 默认 最新

  • Leodong. 2023-03-22 17:33
    关注

    该回答引用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 服务器需要处理更多的请求和响应,并提供更丰富的内容。


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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 3月22日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来