网络编程中服务器端与浏览器的交互的问题

简介: 网络编程中服务器端与浏览器的交互的问题

服务端代码:

//服务器端
public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("服务器启动==========");

        while(!serverSocket.isClosed()){
            Socket socket = serverSocket.accept();  //阻塞,等待连接

            System.out.println("与 " + socket.toString() + "连接成功");
            try{
                // I/O
                InputStream inputStream = socket.getInputStream();      //接收数据流
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));

                String message;
                while((message = reader.readLine())!= null){
                    if(message.length() == 0) break;
                    System.out.println(message);
                }
                System.out.println("接收到来至:" + socket.toString() + "的数据");
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

服务器端启动:
在这里插入图片描述
使用浏览器与服务器端交互
localhost:8888
在这里插入图片描述回到服务器端查看输出:
在这里插入图片描述
浏览器与服务器端建立连接成功,并遵循HTTP协议发出请求数据包:
在这里插入图片描述
HTTP协议中请求数据头通常包括四个部分:

  1. 请求行,包括:请求类型,资源路径以及HTTP版本等信息。
  2. 请求头部,紧接着请求行之后的部分,用来说明服务器要使用的附加信息。
  3. 空行,请求头部后面的空行,是必须的。
  4. 请求数据,也叫主体,可以添加任何数据。

在这个例子中请求数据为空。

在上面,浏览器与服务器端交互时,提示网页无法运行。

这是因为,服务器端没有对浏览器发出的请求做出响应。我们需要在服务器端编写响应浏览器的代码。

public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("服务器启动==========");

        while(!serverSocket.isClosed()){
            Socket socket = serverSocket.accept();  //阻塞,等待连接

            System.out.println("与 " + socket.toString() + "连接成功");
            try{
                // I/O
                InputStream inputStream = socket.getInputStream();      //接收数据流
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"UTF-8"));

                String message;
                while((message = reader.readLine())!= null){
                    if(message.length() == 0) break;
                    System.out.println(message);
                }
                System.out.println("接收到来至:" + socket.toString() + "的数据");


                OutputStream outputStream = socket.getOutputStream();
                outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());
                outputStream.write("Content-Length:11\r\n\n".getBytes());
                outputStream.write("Hello World!".getBytes());
                outputStream.flush();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

浏览器重新访问:localhost:8888
在这里插入图片描述
得到响应结果。

附:HTTP协议——响应状态码

  • 1XX(临时响应)

表示临时响应并需要请求者继续执行操作的状态代码

  • 2XX(成功)

表示成功处理了请求的状态代码。

  • 3XX(重定向)

表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。

  • 4XX(请求错误)

这些状态代码表示请求可能出错,妨碍了服务器的处理。

  • 5XX(服务器错误)

这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

目录
相关文章
|
存储 运维 API
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
344 1
|
存储 弹性计算 网络协议
阿里云服务器ECS实例规格族是什么?不同规格CPU型号、处理器主频及网络性能参数均不同
阿里云ECS实例规格族是指具有不同性能特点和适用场景的实例类型集合。不同规格族如计算型c9i、通用算力型u1、经济型e等,在CPU型号、主频、网络性能、云盘IOPS等方面存在差异。即使CPU和内存配置相同,性能参数和价格也各不相同,适用于不同业务需求。
922 144
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
2381 0
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
492 0
|
存储 安全 Linux
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
535 4
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
|
存储 监控 Linux
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
421 0
|
存储 消息中间件 弹性计算
阿里云服务器ECS计算型c7和通用算力型u1在适用场景、计算性能、网络与存储性能等方面的对比
阿里云ECS服务器u1和c7实例在适用场景、性能、处理器特性等方面存在显著差异。u1为通用算力型,性价比高,适合中小企业及对性能要求不高的场景;c7为企业级计算型,采用最新Intel处理器,性能稳定且强大,适用于高性能计算需求。u1支持多种CPU内存配比,但性能一致性可能受底层平台影响;c7固定调度模式,确保高性能与稳定性。选择时可根据预算与性能需求决定。
785 23
|
SQL 数据采集 人工智能
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
“服务器老被黑?那是你没上AI哨兵!”——聊聊基于AI的网络攻击检测那些事儿
647 12
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
512 22

热门文章

最新文章