针对网络通信的不同层次,Java提供的网络功能有四大类
InetAddress:用于标识网络上的硬件资源。(说白了就是IP地址的相关信息)
URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据
Sockets:使用TCP协议实现网络通信的Socket相关的类
Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。(通过在网络中发送数据报进而实现网络的通信)
InetAddress类用于标识网络上的硬件资源,表示互联网协议(IP)协议。
package zhang; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.MalformedURLException; import java.net.URL; import java.net.UnknownHostException; import java.util.Arrays; /** * InetAddress类*/ public class Main { public static void main(String [] args) throws UnknownHostException { // TODO Auto-generated constructor stub //获取本机的IP地址 InetAddress address=InetAddress.getLocalHost(); System.out.println("计算机名:"+address.getHostName()); System.out.println("IP地址:"+address.getHostAddress()); byte [] bytes=address.getAddress(); System.out.println("字节数组形式的IP"+Arrays.toString(bytes)); System.out.println(address);//直接输出InetAddress对象 //根据主机名获取InetAddress实例 InetAddress address2=InetAddress.getByName("www.baidu.com"); System.out.println(address2); //(URL) Uniform(统一的) Resource(资源) Locator(定位符,探测器) //表示Internet上某一资源的地址 /** * URL由两部分组成:协议名称和资源名称,中间用冒号隔开。http://www.baidu.com * * */ //创建URL的实例 try { URL imooc=new URL("http://www.imooc.com"); //根据已有的URL创建新的URL //?后面的是传递的参数其中#后面的是锚点 URL url=new URL(imooc,"/index.html?username=tom#test"); System.out.println("协议:"+url.getProtocol());//获取协议信息 System.out.println("主机:"+url.getHost());//主机信息 //如果未指定端口号则根据协议的不同使用默认的端口号 http使用的是80端口 //getPort返回值为-1 System.out.println("端口:"+url.getPort());//获取端口号 /** * 协议:http * 主机:www.imooc.com * 端口:-1 * */ System.out.println("文件路径:"+url.getPath()); System.out.println("文件名:"+url.getFile()); System.out.println("相对路径"+url.getRef()); System.out.println("查询字符串"+url.getQuery()); /** * 文件路径:/index.html * 文件名:/index.html?username=tom * 相对路径test * 查询字符串username=tom * */ } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } /** * 使用URL读取网页内容 * 1.通过URL对象的openStream()方法可以得到指定资源的输入流 * 2.通过输入流可以读取、访问网络上的资源 * */ //创建URL实例 try { URL url2=new URL("http://www.baidu.com"); InputStream is=url2.openStream(); //将字节输入流转换成字符输入流 InputStreamReader isr=new InputStreamReader(is,"utf-8"); //为字符输入流添加缓冲,提高效率 BufferedReader bis=new BufferedReader(isr); String data=bis.readLine();//读取数据 while(data!=null){//循环读取数据 System.out.print(data);//输出数据 data=bis.readLine(); }//读取到的是百度首页的源代码 } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }