【从零开始重学Java】第13天 Java网络功能

传送门

从零开始重学Java 第0天
从零开始重学Java 第1天 Java概述
从零开始重学Java 第2天 标识符和数据类型
从零开始重学Java 第3天 表达式和流程控制语句
从零开始重学Java 第4天 数组、向量和字符串
从零开始重学Java 第5天 对象和类
从零开始重学Java 第6天 异常
从零开始重学Java 第7天 高级特性
从零开始重学Java 第8_9_10天 图形界面、Swing、Applet
从零开始重学Java 第11天 数据流
从零开始重学Java 第12天 线程
从零开始重学Java 第13天 线程

Java的网络功能

概述

IP:端口 就是Socket,中文翻译“套接字”(这个翻译实在太别扭了)

网络模型

使用InetAddress

        try {
            String localHostAddress = InetAddress.getLocalHost().getHostAddress();
            System.out.println("localHostAddress = " + localHostAddress);
            InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com");
            System.out.println("baidu address");
            for (InetAddress inetAddress : allByName) {
                System.out.println(inetAddress.getHostAddress());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
//localHostAddress = 
//baidu address
//220.181.38.150
//220.181.38.149

统一资源定位器

URL的概念

URL的构造方法

与URL相关的异常

获取URL对象属性

读入URL数据

        try {
            URL url = new URL("https://www.baidu.com/");
            try (InputStream inputStream = url.openStream()){
                byte[] bytes = inputStream.readAllBytes();
                System.out.println(new String(bytes));
            }
        }catch (Exception e){
            e.printStackTrace();
        }

Socket接口

Socket的基本概念

Socket通信的基本步骤

Socket通信的程序设计

    public static void main(String[] args) {
        new Thread(()->server(6666)).start();
        try {
            Thread.sleep(1000);
        }catch (Exception e){
            e.printStackTrace();
        }
        client(6666);

    }

    private static void server(int port){
        try (ServerSocket socket = new ServerSocket(port)){
            System.out.println("服务端已打开端口 " + port);
            try (Socket acceptSocket = socket.accept();
                 OutputStream outputStream = acceptSocket.getOutputStream()){
                System.out.println("acceptSocket.getInetAddress() " + acceptSocket.getInetAddress());
                System.out.println("acceptSocket.getPort() " + acceptSocket.getPort());
                outputStream.write("Hello".getBytes());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    private static void client(int port){
        try (Socket socket = new Socket("127.0.0.1",port)){
            System.out.println("客户端已成功连接端口 " + port);
            try (InputStream inputStream = socket.getInputStream()){
                System.out.println("客户端收到了 " + new String(inputStream.readAllBytes()));
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

Java编程综合实例

第十三章习题

  • Socket为什么要关闭

释放资源、通知对方连接结束、防止数据丢失(触发TCP协议中的连接终止过程)、释放端口、提高安全性

posted @ 2024-01-17 18:17  迷路的哨兵甲  阅读(2)  评论(0编辑  收藏  举报