在Java中提供了专门的网络开发程序包---java.net,java的网络编程提供了两种通信协议:TCP(传输控制协议)和UDP(数据报协议)。
一.IP(Internet Protocol) 与InetAddress类
1.IP简介
互联网上的每一台计算机都有一个唯一表示自己的标识,即IP地址。
IP地址=网络地址+主机地址
2.InetAddress
该类主要表示IP地址,有两个子类:Inet4Address、Inet6Address,前者表示IPV4,后者表示IPV6。
InetAddress类的常用方法有:
类型
方法
描述
static InetAddress
getByName(Stringhost)
在给定主机名的情况下确定主机的 IP 地址。
static InetAddress
getLocalHost()
返回本地主机。
String
getHostName()
获取此 IP 地址的主机名。
boolean
isReachable(int timeout)
测试是否可以达到该地址。
测试InetAddress类:
package org.demo.net;
import java.net.InetAddress;
/**
* 测试InetAddress类
* @author oushine
*/
public class InetAddressDemo {
public static void main(String[] args) {
try {
//声明并得到本地InetAddress对象
InetAddress iAddress1=InetAddress.getLocalHost();
//声明并得到远程InetAddress对象
InetAddress iAddress2=InetAddress.getByName("www.baidu.com");
//获得本地IP地址
System.out.println("本机IP地址为:"+iAddress1.getHostAddress());
//获得远程IP地址
System.out.println("百度的IP地址是:"+iAddress2.getHostAddress());
System.out.println("本机是否可达:"+iAddress1.isReachable(3000));
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
二.URL与URLConnection
1.URL
URL(Uniform Resource Locator)是统一资源定位符,可以直接使用此类找到互联网上的资源(比如一个网页)。
URL类常用方法:
类型
方法
描述
构造方法
URL(String spec)
根据 String 表示形式创建 URL 对象。
构造方法
URL(String protocol, String host, int port, String file)
根据指定 protocol、host、port 号和 file 创建 URL 对象。
URLConnection
openConnection()
返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
InputStream
openStream()
打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
使用URL读取内容:
package org.demo.net;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
public class UrlDemo {
public static void main(String[] args) {
URL url;
try {
//指定操作的URL
url = new URL("http","www.baidu.com",80,"/index.html");
//打开输入流,读取URL内容
InputStream inputStream=url.openStream();
Scanner scan=new Scanner(inputStream);
//设置读取分隔符
scan.useDelimiter("\n");
while(scan.hasNext()){
//输出内容
System.out.println(scan.next());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果:
显示出来的是HTML代码。
2.URLConnection
URLConnection是封装访问远程网络资源一般方法的类,通过它可以建立与远程服务器的连接,检查远程资源的一些属性。
常用方法:
类型
方法
描述
int
getContentLength()
返回 content-length 头字段的值。
String
getContentType()
返回 content-type 头字段的值。
InputStream
getInputStream()
返回从此打开的连接读取的输入流。
URLConnection对象可以通过URL类的openConnection()方法取得。
取得URL的基本信息:
package org.demo.net;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionDemo {
public static void main(String[] args) {
try {
URL url=new URL("http://www.baidu.com");
//建立连接
URLConnection urlConn=url.openConnection();
System.out.println("内容大小:"+urlConn.getContentLength());
System.out.println("内容类型:"+urlConn.getContentType());
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
三.URLEncoder与URLDecoder
在java中如果需要完成编码和解码操作就要使用URLEncoder和URLDecoder两个类。
URLEncoder类的方法:
类型
方法
描述
static String
encode(String s, String enc)
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
URLDecoder类的方法:
类型
方法
描述
static String
decode(String s, String enc)
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。
编码及解码操作:
package org.demo.net;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class CodeDemo {
public static void main(String[] args) {
String keyWord="oushine 阳";
try {
String enCode=URLEncoder.encode(keyWord, "UTF-8");
System.out.println("编码之后:"+enCode);
String deCode=URLDecoder.decode(enCode, "UTF-8");
System.out.println("解码之后:"+deCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果: