*****************InetAddress**********************

InetAddress:用于标识网络上的硬件资源(如,IP,主机名,域名等)。
    对于InetAddress,三个方法:getLocalHost()、getByName()以及getAllByName()可以用来创建InetAddress的实例。
 InetAddress类没有提供返回构造函数,所以不能用new()方法来创建它的对象,而只可以调用静态方法getLocalHost()、getByName()、getByAddress()等来生成InetAddress类的实质。

1、InetAddress常用方法:
1.InetAddress.getLocalHost()仅返回象征本地主机的InetAddress对象。(返回的是本地地址)
    本机地址还为localhost,127.0.0.1,这三个地址都是一回事。
例,InetAddress.getLocalHost();//Lenovo-PC/169.254.193.131

2.getByName()方法返回一个传给它的主机名的InetAddress。
  如果这些方法不能解析主机名,它们引发一个UnknownHostException异常。
  在Internet上,用一个名称来代表多个机器是常有的事。
例,InetAddress.getByName("www.baidu.com");//www.baidu.com/61.135.169.121

3.getAllByName()方法返回代表由一个特殊名称分解的所有地址的InetAddresses类数组。
    getAllByName()方法是根据主机名返回其可能的所有InetAddress对象,保存在一个数组中。
  在不能把名称分解成至少一个地址时,它将引发一个UnknownHostException异常。

4.getLoopbackAddress()方法返回本地环回地址
例,InetAddress.getLoopbackAddress();//localhost/127.0.0.1

5.查看端口是否已使用
Socket socket = new Socket(Address,port);#address代表主机的IP地址,port代表端口号.
如果对该主机的特定端口号能建立一个socket,则说明该主机的该端口在使用。
例,import java.net.*;

for (int i = 500; i < 1024; i++) {
             try {
                System.out.println("查看 端口"+ i);
                Socket skt = new Socket("localhost", i);
                System.out.println("端口 " + i + " 已被使用");
             }
             catch (UnknownHostException e) {
                System.out.println("Exception occured"+ e);
                break;
             }
             catch (IOException e) {

System.out.println("端口"+i+"未被使用");
             }
          }

补充:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
IP+端口号就是所谓的Socket!!!

在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。

********************URL类******************************

URL:通过URL类可以直接读取或写入网络上的资源。
1.URL可以分为如下几个部分:
    protocol://host:port/path?query#fragment

例,http://www.runoob.com/index.html?language=cn#j2se
URL 解析:
    协议为(protocol):http
    主机为(host:port):www.runoob.com
    端口号为(port): 80 ,以上URL实例并未指定端口,因为 HTTP 协议默认的端口号为 80。
    文件路径为(path):/index.html
    请求参数(query):language=cn
    定位位置(fragment):j2se,定位到网页中 id 属性为 j2se 的 HTML 元素位置 。

2.URL类的使用:
例,
URL url=new URL("http://www.runoob.com/wp-content/themes/runoob/assets/img/newlogo.png");
注意:必须用完整的域名(例,http://www.baidu.com/),不能(例,www.baidu.com/)这样会报错!

2.1获取URL对象的属性
  getDefaultPort(): 返回默认的端口号。
  getFile(): 获得URL指定资源的完整文件名。
  getHost(): 返回主机名。
  getPath(): 返回指定资源的文件目录和文件名。
  getPort(): 返回端口号,默认为-1。
  getProtocol(): 返回表示URL中协议的字符串对象。
  getRef(): 返回URL中的HTML文档标记,即#号标记。
  getUserInfo: 返回用户信息。
  toString: 返回完整的URL字符串。
例,
    URL url=new URL("http://www.runoob.com/wp-content/themes/runoob/assets/img/newlogo.png");
    System.out.println(url.getDefaultPort());//80
    System.out.println(url.getFile());//wp-content/themes/runoob/assets/img/newlogo.png
    System.out.println(url.getHost());//www.runoob.com
    System.out.println(url.getPath());///wp-content/themes/runoob/assets/img/newlogo.png
    System.out.println(url.getPort());//-1,因为创建URL实例的时候没有指定端口号
    System.out.println(url.getProtocol());//http
    System.out.println(url.getRef());//null
    System.out.println(url.getUserInfo());//null
    System.out.println(url.toString());//http://www.runoob.com/wp-content/themes/runoob/assets/img/newlogo.png

****************URLConnection类**********************

URLConnection 类是一个抽象类,代表应用程序和URL之间的通信连接,此类的实例可用于读取和写入此URL引用的资源。
URLConnection 允许使用GET,POST或者其他HTTP方法请求方式将请求数据发送到服务器。

有两种方法可以用来访问Internet。一是利用URL类的openStream()方法;二是使用openConnection()方法创建一个URLConnection类的对象。
  其中,方法openStream()与指定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据。

例,(简单的网页爬取)方法一:openStream()

openStream()方法可以得到指定资源的输入流,通过输入流可以读取,访问网络上的资源。
        URL url=new URL("http://www.cnblogs.com/Downtime/p/7822379.html");
        InputStream conn=url.openStream();//得到字节输入流
        InputStreamReader read=new InputStreamReader(conn,"utf-8");//将字节输入流转换为字符输入流
        BufferedReader bread=new BufferedReader(read);//将字符输入流添加到缓存中
        while(bread.readLine() != null){
            System.out.println(bread.readLine());
        }
        conn.close();

方法二:URLConnection
        URL url=new URL("http://www.cnblogs.com/Downtime/p/7822379.html");
        URLConnection conn=url.openConnection();
        InputStream in=conn.getInputStream();
        InputStreamReader read=new InputStreamReader(in,"utf-8");
        BufferedReader reader=new BufferedReader(read);
        while(reader.readLine() != null ){
            System.out.println(reader.readLine());
        }
        conn.getInputStream().close();

2.常用方法:
URLConnection 方法列表如下:
1、    Object getContent()
检索URL链接内容
2、    Object getContent(Class[] classes)
检索URL链接内容
3、    String getContentEncoding()
返回头部 content-encoding 字段值。
4、    int getContentLength()
返回头部 content-length字段值
5、    String getContentType()
返回头部 content-type 字段值
6、    int getLastModified()
返回头部 last-modified 字段值。
7、    long getExpiration()
返回头部 expires 字段值。
8、    long getIfModifiedSince()
返回对象的 ifModifiedSince 字段值。
9、    public void setDoInput(boolean input)
URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true。
10、    public void setDoOutput(boolean output)
URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。
11、    public InputStream getInputStream() throws IOException
返回URL的输入流,用于读取资源
12、    public OutputStream getOutputStream() throws IOException
返回URL的输出流, 用于写入资源。
13、    public URL getURL()
返回 URLConnection 对象连接的URL

14.getHeaderField(int n)    返回String

返回第 n 个头字段的值。

15.getHeaderField(String name)   返回String

返回指定的头字段的值。

16.getHeaderFields()     返回Map类型

返回所有url响应头信息。

例,

URL url=new URL("http://www.runoob.com/");
         URLConnection conn=url.openConnection();
         Map headers=conn.getHeaderFields();
         Set set=headers.entrySet();
         Iterator it=set.iterator();
         while(it.hasNext()){
             Map.Entry en=(Entry<String, String>) it.next();
             System.out.println(en.getKey()+":"+en.getValue());
         }

Java常见网络操作(URL类,InetAddress类,URLConnection类)的更多相关文章

  1. java常见文件操作

    收集整理的java常见文件操作,方便平时使用: //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if ( ...

  2. Java 获取网络重定向URL(302重定向)

    方法1: import java.net.HttpURLConnection; import java.net.URL; import org.junit.Assert; import org.jun ...

  3. URLConnection类详解

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3753224.html ...

  4. URLConnection类详解-转

    转-http://www.cnblogs.com/shijiaqi1066/p/3753224.html 1. URLConnection概述 URLConnection是一个抽象类,表示指向URL指 ...

  5. Android网络操作的几种方法

    安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERN ...

  6. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  7. Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  8. Java的IO操作---File类

    目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...

  9. Java中创建操作文件和文件夹的工具类

    Java中创建操作文件和文件夹的工具类 FileUtils.java import java.io.BufferedInputStream; import java.io.BufferedOutput ...

随机推荐

  1. SpringCloud之Zuul高并发情况下接口限流(十二)

    高并发下接口限流技术gauva(谷歌的框架) MySql最大连接数3000: 原理:框架每秒向桶里放100个令牌,接口请求来了先去拿令牌,拿到令牌后才能继续向后走,否则不允许向后执行:当接口请求太频繁 ...

  2. Spring Boot 快速入门 史上最简单

    1.Spring Boot 概述 Spring Boot 是所有基于 Spring 开发的项目的起点.Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的 ...

  3. 【原创】go语言学习(二十一)Select和线程安全

    目录 select语义介绍和使用 线程安全介绍 互斥锁介绍和实战 读写锁介绍和实战 原子操作介绍 select语义介绍和使用 1.多channel场景 A. 多个channel同时需要读取或写入,怎么 ...

  4. Apache Tomcat服务部署网站

    Tomcat是Apache软件基金会 (Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了S ...

  5. Mybatis:CRUD操作

    提示: Mapper配置文件的命名空间为对应接口包名+接口名字,这个经常会忘记和搞错的!! select标签 在接口中编写三个查询方法 //获取全部用户List<User> selectU ...

  6. CSPS模拟 72

    状态..找不回来了.. T2 简单的期望 考试的时候忘考虑一个事,就是连续多位进位的情况 考试的时候打出$n^2$复杂度dp还没引起怀疑真是不应该. T3 简单的操作 最后一刻才想到图不联通,已经想不 ...

  7. NOIP模拟 40

    考得更嘛也不是了. 不过如果不犯任何低错的话.. T1 我神奇地想要缩减码量 比如想把尽量多的$b[i]-1$省掉 于是求$b[i]$的时候先减了个一 本来是正的 减完就忘了他应该是非负的了 于是线段 ...

  8. HTML知识点汇总

    一.什么是HTML HTML是用来描述网页的一种语言. HTML是指超文本标记语言(不仅包含纯文本,还包含图片.超链接.音频.视频等). HTML使用一套标记标签来描述网页. 二.HTML标签的作用 ...

  9. 史上最全 Java 中各种锁的介绍

    更多精彩原创内容请关注:JavaInterview,欢迎 star,支持鼓励以下作者,万分感谢. 锁的分类介绍 乐观锁与悲观锁 锁的一种宏观分类是乐观锁与悲观锁.乐观锁与悲观锁并不是特定的指哪个锁(J ...

  10. 简单搭建DNS服务器——bind

    1安装bind yum install -y bind bind-utils bind-chroot 2 修改配置文件 # grep '^[^#]' /etc/named.conf options { ...