3Java网络编程技术
Java
语言是在网络环境下诞生的,所以Java
语言虽然不能说是对于网络编程的支持最好的语言,但是必须说是一种对于网络编程提供良好支持的语言,使用Java
语言进行网络编程将是一件比较轻松的工作。
和网络编程有关的基本API
位于java.net
包中,该包中包含了基本的网络编程实现,该包是网络编程的基础。该包中既包含基础的网络编程类,也包含封装后的专门处理WEB
相关的处理类。在本章中,将只介绍基础的网络编程类。
首先来介绍一个基础的网络类——InetAddress
类。该类的功能是代表一个IP
地址,是ip
地址的java
表示方式。并且将IP
地址和域名相关的操作方法包含在该类的内部。
InetAddress
类–代表一个IP
地址
创建InetAddress类实例的方法
InetAddress
没有public
构造器,必须通过一系列的静态方法获取实例。如下表所示。
方法 | 描述 |
---|---|
static InetAddress[] getAllByName(String host) |
在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。 |
static InetAddress getByAddress(byte[] addr) |
在给定原始 IP 地址的情况下,返回 InetAddress 对象。 |
static InetAddress getByAddress(String host, byte[] addr) |
根据提供的主机名和 IP 地址创建 InetAddress。 |
static InetAddress getByName(String host) |
在给定主机名的情况下确定主机的 IP 地址。 |
static InetAddress getLocalHost() |
返回本地主机。 |
在这些静态方法中,最为常用的应该是getByName(String host)
方法,只需要传入目标主机的名字,
实例
通过域名获取InetAddress
对象:
1 | // 使用域名创建InetAddress对象 |
通过IP地址获取InetAddress对象:
1 | // 使用点分十进制IP地址创建InetAddress对象 |
获取本机的InetAddress对象:
1 | InetAddress address = InetAddress.getLocalHost(); |
重写Object类的方法:
方法 | 描述 |
---|---|
boolean equals(Object obj) |
将此对象与指定对象比较。 |
int hashCode() |
返回此 IP 地址的哈希码。 |
String toString() |
将此 IP 地址转换为 String。 |
实例: |
1 | //根据域名生成实例 |
运行结果:
1 | github.com/13.250.177.223 |
获取IP地址相关信息的方法
方法 | 描述 |
---|---|
String getCanonicalHostName() |
获取此 IP 地址的完全限定域名。 |
String getHostAddress() |
获取点分十进制表示的ip地址 |
byte[] getAddress() |
获取字节数组表示的ip地址 |
String getHostName() |
获取此 IP 地址的主机名。 |
实例:
1 | public static void main(String[] args) |
运行结果:
1 | IP地址的完全限定域名:ec2-52-74-223-119.ap-southeast-1.compute.amazonaws.com |
从运行结果中可以看到getHostAddress()
方法获取的是字符串表示的IP地址(点分十进制),而getAddress()
获取的是字节数组表示的IP地址,这两者只是表示方式不同而已,两者之间可以相互转化。
判断方法:
方法 | 描述 |
---|---|
boolean isAnyLocalAddress() |
检查 InetAddress 是否是通配符地址的实用例行程序。 |
boolean isLinkLocalAddress() |
检查 InetAddress 是否是链接本地地址的实用例行程序。 |
boolean isLoopbackAddress() |
检查 InetAddress 是否是回送地址的实用例行程序。 |
boolean isMCGlobal() |
检查多播地址是否具有全局域的实用例行程序。 |
boolean isMCLinkLocal() |
检查多播地址是否具有链接范围的实用例行程序。 |
boolean isMCNodeLocal() |
检查多播地址是否具有节点范围的实用例行程序。 |
boolean isMCOrgLocal() |
检查多播地址是否具有组织范围的实用例行程序。 |
boolean isMCSiteLocal() |
检查多播地址是否具有站点范围的实用例行程序。 |
boolean isMulticastAddress() |
检查 InetAddress 是否是 IP 多播地址的实用例行程序。 |
boolean isReachable(int timeout) |
测试是否可以达到该地址。 |
boolean isReachable(NetworkInterface netif,int ttl, int timeout) |
测试是否可以达到该地址。 |
boolean isSiteLocalAddress() |
检查 InetAddress 是否是站点本地地址的实用例行程序。 |
原文链接: 3Java网络编程技术