zoukankan      html  css  js  c++  java
  • 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地址+端口号”来区分不同的服务的。
  • 相关阅读:
    SQL学习
    FOR XML PATH
    IOS学习网址
    weak nonatomic strong等介绍(ios)
    UVALive3045 POJ2000 ZOJ2345 Gold Coins
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA10905 Children's Game
  • 原文地址:https://www.cnblogs.com/JAYIT/p/6274745.html
Copyright © 2011-2022 走看看