Java常见网络操作(URL类,InetAddress类,URLConnection类)
*****************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类)的更多相关文章
- java常见文件操作
收集整理的java常见文件操作,方便平时使用: //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if ( ...
- Java 获取网络重定向URL(302重定向)
方法1: import java.net.HttpURLConnection; import java.net.URL; import org.junit.Assert; import org.jun ...
- URLConnection类详解
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3753224.html ...
- URLConnection类详解-转
转-http://www.cnblogs.com/shijiaqi1066/p/3753224.html 1. URLConnection概述 URLConnection是一个抽象类,表示指向URL指 ...
- Android网络操作的几种方法
安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERN ...
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- Java的IO操作---File类
目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...
- Java中创建操作文件和文件夹的工具类
Java中创建操作文件和文件夹的工具类 FileUtils.java import java.io.BufferedInputStream; import java.io.BufferedOutput ...
随机推荐
- SpringCloud之Zuul高并发情况下接口限流(十二)
高并发下接口限流技术gauva(谷歌的框架) MySql最大连接数3000: 原理:框架每秒向桶里放100个令牌,接口请求来了先去拿令牌,拿到令牌后才能继续向后走,否则不允许向后执行:当接口请求太频繁 ...
- Spring Boot 快速入门 史上最简单
1.Spring Boot 概述 Spring Boot 是所有基于 Spring 开发的项目的起点.Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的 ...
- 【原创】go语言学习(二十一)Select和线程安全
目录 select语义介绍和使用 线程安全介绍 互斥锁介绍和实战 读写锁介绍和实战 原子操作介绍 select语义介绍和使用 1.多channel场景 A. 多个channel同时需要读取或写入,怎么 ...
- Apache Tomcat服务部署网站
Tomcat是Apache软件基金会 (Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了S ...
- Mybatis:CRUD操作
提示: Mapper配置文件的命名空间为对应接口包名+接口名字,这个经常会忘记和搞错的!! select标签 在接口中编写三个查询方法 //获取全部用户List<User> selectU ...
- CSPS模拟 72
状态..找不回来了.. T2 简单的期望 考试的时候忘考虑一个事,就是连续多位进位的情况 考试的时候打出$n^2$复杂度dp还没引起怀疑真是不应该. T3 简单的操作 最后一刻才想到图不联通,已经想不 ...
- NOIP模拟 40
考得更嘛也不是了. 不过如果不犯任何低错的话.. T1 我神奇地想要缩减码量 比如想把尽量多的$b[i]-1$省掉 于是求$b[i]$的时候先减了个一 本来是正的 减完就忘了他应该是非负的了 于是线段 ...
- HTML知识点汇总
一.什么是HTML HTML是用来描述网页的一种语言. HTML是指超文本标记语言(不仅包含纯文本,还包含图片.超链接.音频.视频等). HTML使用一套标记标签来描述网页. 二.HTML标签的作用 ...
- 史上最全 Java 中各种锁的介绍
更多精彩原创内容请关注:JavaInterview,欢迎 star,支持鼓励以下作者,万分感谢. 锁的分类介绍 乐观锁与悲观锁 锁的一种宏观分类是乐观锁与悲观锁.乐观锁与悲观锁并不是特定的指哪个锁(J ...
- 简单搭建DNS服务器——bind
1安装bind yum install -y bind bind-utils bind-chroot 2 修改配置文件 # grep '^[^#]' /etc/named.conf options { ...