• InetAddress类和InetSocketAddress的使用


    一简介

    InetAddress是Java对IP地址的封装,代表互联网协议(IP)地址;
    InetAddress对象的获取只能通过静态方法,比如根据主机名获取主机的ip地址封装对象:

    1
    InetAddress add=InetAddress.getByName("BOPZKQZ9SSY5ECY");


    主机名:BOPZKQZ9SSXXXXX, ip地址:1XX.1XX.2XX.210

    InetSocketAddress是SocketAddress的实现子类。

    此类实现 IP 套接字地址(IP 地址 + 端口号),不依赖任何协议。
    在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用SocketAddress类来向connect方法传递服务器的IP和端口。
    SocketAddress只是个抽象类,它除了有一个默认的构造方法外,其它的方法都是abstract的,因此,我们必须使用SocketAddress的子类来建立SocketAddress对象,也就是唯一的子类InetSocketAddress


    二主要功能方法

    1
    2
    3
    4
    5
    6
    InetAddress address = InetAddress.getLocalHost();
    System.out.println("主机名:" + address.getHostName() + ", ip地址:"
            + address.getHostAddress());
    InetAddress add = InetAddress.getByName("BOPZKQZ9SSY5ECY");
    System.out.println(add.getHostAddress());




    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    final Socket socket = new Socket();
    SocketAddress address = new InetSocketAddress("www.fortify.net", 443);
    try {
        socket.connect(address);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }// 连接远程主机
    Thread reader = new Thread() {
        @Override
        public void run() {
            try {
                byte[] buffer = new byte[512];
                InputStream stream = socket.getInputStream();
                socket.getInputStream().read(buffer);
            } catch (Exception ex) {
     
            }
        }
    };
    reader.start();






    三两者区别

    关键就是InetSocketAddress不基于任何协议,一般用于socket编程中。

    1
    表面看InetSocketAddress多了一个端口号,端口的作用:一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。
    1
    那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。
    1
    实际上是通过“IP地址+端口号”来区分不同的服务的。
  • 相关阅读:
    POJ
    luogu- P1373 小a和uim之大逃离 DP 四维,其中一维记录差值
    牛客国庆集训派对Day3 B Tree(树形dp + 组合计数)
    【CF 1059C】 Sequence Transformation 数学
    POJ
    牛客国庆集训派对Day6 A Birthday 费用流
    Treap + 无旋转Treap 学习笔记
    牛客2018国庆集训派对Day3 I Metropolis 多源最短路径
    Gym
    CodeForces
  • 原文地址:https://www.cnblogs.com/JAYIT/p/6274745.html
Copyright © 2020-2023  润新知