InetAddress类用于表示网络上的IP地址 。网络中的每台主机采用IP地址进行标识,Java语言利用Java.net包中的InetAddress类对IP进行封装。该类提供了操作IP地址的各种方法类本身没有构造方法,而是通过调用相关静态方法获取实例。InetAddress类中定义的主要方法如下:
Boolean equals(Object obj):将此对象与指定对象比较。
Byte[] getAddress():返回此InetAddress对象的原始IP地址。
Static InetAddress[] getAllByName(String host):在给定主机名的情况下,根据系统上配置的名称,服务返回其IP地址所组成的数组。
Static IneAddress getByAddress(byte[] addr):在给定原始IP地址的情况下,返回InetAddress对象。
Static InetAddress getByAddress(String host,byte[] addr):根据提供的主机名和IP地址创建InetAddress。
Static InetAddress getByName(String host):在给定主机名的情况下确定主机的IP地址。
String getCanonicalHostName():获取此IP地址的完全限定域名。
String getHostAddress():返回IP地址字符串(以文本表现形式)。
String getHostName():获取此IP地址的主机名。
Static InetAddress getLocalHost():返回本地主机。
Int hashCode():返回此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是否是站点本地地址的实用例程序。
String toString():将此IP地址转换为String。
一个应用小例子:
InetAddress类实现简单IP扫描获得主机名
package demo.net;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IPScanner {
// 传入IP地址,返回主机名称,若主机不可达则返回ip地址的字符串形式
public static String scanner(byte[] ip) {
InetAddress addr = null;
try {
addr = InetAddress.getByAddress(ip);
} catch (UnknownHostException e) {
e.printStackTrace();
}
return addr.getHostName();
}
public static void main(String[] args) {
String hostName;
String ip;
for (int i = 0; i <= 127; i++) {
ip = "59.68.255." + i;
hostName = scanner(new byte[] { 59, 68, (byte) 255, (byte) i });
if (!ip.equals(hostName))
System.out.println(ip + " : " + hostName);
}
}
}
URL是统一资源定位符(Uniform Resource Locator)的简称,用于表示Internet上某一资源的地址。Internet上的网络资源非常丰富,如常见的WWW和FTP站点上的各种文件、目录等。浏览器通过解析给定的URL可以查找网络上的这些资源。URL的语法格式通常如下所示:
Protocol:resourceName
其中,参数protocol表示网络传输协议,如:http、ftp等。参数rescurceName表示完整的资源名,又可分为主机名、端口号、文件等几个部分。如:
http://www.sina.com.cn
http://www.baidu.com/
http://localhost:8080/a/b.jsp
创建URL类:
URL(String spec):使用知道的字符串构建。
URL(String protocol,String host,int port,String file):使用指定的协议、主机名、端口号、文件名创建。
URL(String protocol,String host,String file) :使用指定的协议、主机名、文件名创建。
URL(URL context,String spec):使用基地址和相对URL创建。
使用URL类:
String getAuthority():获得此URL的授权部分。
Object getContent():获得此URL的内容。
Int getDefaultPort():获得与此URL关联协议的默认端口号。
String getFile():获得此URL的文件名。
String getHost():获得此URL的主机名(如果适用)。
String getPath():获得此URL的路径部分。
Int getPort():获得此URL的端口号。
String getProtocol():获得此URL的协议名称。
String getQuery()::获得此URL的查询部分。
String getRef():获得此URL的锚点(也称为“引用”)。
String getUserInfo():获得此URL的userInfo部分。
URLConnection openConnection():返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
InputStream openStream():打开到此URL的连接,并返回一个用于从该链接读入的InputStream。
Boolean sameFile(URL other):比较两个URL,不包括片段部分。
Protected void set(String protocol,String host,int port,String file,String ref):设置URL的片段。
Protected void setURLStreamHandlderFactory(URLStreamHandlerFactoryfac):设置应用程序的URLStreamHandlerFactory。
URLConnect类:
在Java.net包中定义了URLConnection类,该类用来表示与URL建立的通信连接。URLConnection类的实例通过调用URL类的openConnection()方法获得。URLConnection类用于访问网络资源的主要方法如下所示:
Void addRequestProperty(String key,String value):添加由键值对指定的一般请求属性。
Abstract void connect():打开到此URL引用的资源的通信链接(如果尚未建立这样的连接)。
ObjectgetConnect():检索此URL连接的内容。
Long getDate():返回date头字段的值。
Boolean getDefaultUseCaches():返回URLConnection的useCaches标志的默认值。
InputStream getInputStream():返回从此打开的连接读取的输入流。
OutputStream getOutputStream():返回写入到此连接的输出流。
URL getURL():字段的值。
Boolean getUseCaches():返回此URLConnection的useCaches字段的值。
一个URL示例:
public class URLConnectionDemo {
public static void main(String[] args) {
try {
// 1、通过在 URL 上调用openConnection 方法创建连接对象。
URL url = new URL("http://www.whpu.edu.cn");
URLConnection connection = url.openConnection();
// 2、处理设置参数和一般请求属性。
connection.setDoInput(true);
connection.setDoOutput(true);
// 3、使用 connect 方法建立到远程对象的实际连接。
connection.connect();
// 4、远程对象变为可用。远程对象的头字段和内容变为可访问。
System.out.println(connection.getContentType());
System.out.println(connection.getContentEncoding());
System.out.println(connection.getContentLength());
System.out.println(connection.getDate());
// 读取内容
Scanner in = new Scanner(connection.getInputStream());
while (in.hasNextLine())
System.out.println(in.nextLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:输出一些报头信息及html页面源码
|