A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫衣侯 中级黑马   /  2013-6-10 23:59  /  1304 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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页面源码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

1 个回复

倒序浏览
最好把代码放在代码编辑区里 <>
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马