网络编程_InetAddress_InetSocketAddress_URL_爬虫原理JAVA185-186

来源:互联网 发布:数据质量整改报告 编辑:程序博客网 时间:2024/06/06 04:33

来源:http://www.bjsxt.com/
一、S02E185_01网络编程_InetAddress_InetSocketAddress

InetAddress

InetSocketAddress

package com.test.net.ip;import java.net.InetAddress;import java.net.UnknownHostException;/** * 没有封装端口 * InetAddress * 1、静态方法获取对象 * InetAddress.getLocalHost(); * InetAddress.getByName("www.163.com"); * InetAddress.getByName("223.87.1.58"); * 2、方法 * getHostAddress()返回ip地址 * getHostName()返回域名或本机计算机名 */public class InetAddressDemo01 {    public static void main(String[] args) throws UnknownHostException {        //使用getLocalHost方法创建InetAddress对象        InetAddress addr = InetAddress.getLocalHost();        System.out.println(addr.getHostAddress());//返回:127.0.0.1        System.out.println(addr.getHostName());//输出计算机名        //根据域名得到InetAddress对象        addr = InetAddress.getByName("www.163.com");        System.out.println(addr.getHostAddress());//返回163服务器ip:61.135.253.15        System.out.println(addr.getHostName());//输出:www.163.com        //根据ip得到InetAddress对象        addr = InetAddress.getByName("61.135.253.15");        System.out.println(addr.getHostAddress());//返回163服务器ip:61.135.253.15        //输出ip而不是域名。如果这个ip地址不存在或DNS服务器不允许进行ip地址和域名的映射,        //getHostName方法就直接返回这个ip地址        System.out.println(addr.getHostName());    }}
package com.test.net.ip;import java.net.InetAddress;import java.net.InetSocketAddress;/** * 封装端口:在InetAddress基础上 + 端口 * 创建对象:InetSocketAddress(String hostname, int port) *          InetSocketAddress(InetAddress addr, int port) * getAddress()、getHostName()、getPort() */public class InetSocketAddressDemo01 {    public static void main(String[] args) {        InetSocketAddress address = new InetSocketAddress("127.0.0.1",9999);//"127.0.0.1"代表本机        System.out.println(address.getHostName());//返回本机名        System.out.println(address.getPort());        InetAddress addr = address.getAddress();        System.out.println(addr.getHostAddress());//返回地址        System.out.println(addr.getHostName());//返回计算机名    }}

二、S02E186_01网络编程_URL爬虫原理

URL

package com.test.net.url;import java.net.MalformedURLException;import java.net.URL;/** * 创建 * URL(String spec):绝对路径构建 * URL(URL context,String spec):相对路径构建 */public class URLDemo01 {    public static void main(String[] args) throws MalformedURLException {        //绝对路径构建        URL url = new URL("http://www.baidu.com:80/index.html#aa?uname=test");//锚点:#aa        System.out.println("协议:" + url.getProtocol());        System.out.println("域名:" + url.getHost());        System.out.println("端口:" + url.getPort());        System.out.println("资源:" + url.getFile());        System.out.println("相对路径:" + url.getPath());        System.out.println("锚点:" + url.getRef());//锚点        //?参数:存在锚点则返回null,否则返回正确        System.out.println("参数:" + url.getQuery());        url = new URL("http://www.baidu.com:80/a/");        url = new URL(url,"b.txt");//相对路径        System.out.println(url.toString());    }}
package com.test.net.url;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.URL;/** * 获取资源:源代码 * InputStream openStream()  */public class URLDemo02 {    public static void main(String[] args) throws IOException {        URL url = new URL("http://www.baidu.com");//主页,默认资源        //获取资源  网络流        /*编解码集不统一,出现乱码        InputStream is = url.openStream();        byte[] flush = new byte[1024];        int len = 0;        while(-1!=(len=is.read(flush))){            System.out.println(new String(flush,0,len));        }        is.close();        */        //使用转换流        BufferedReader br =                 new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));        BufferedWriter bw =                 new BufferedWriter(new OutputStreamWriter(new FileOutputStream("baidu.html"),"utf-8"));        String msg = null;        while(null!=(msg=br.readLine())){            //System.out.println(msg);            bw.append(msg);            bw.newLine();        }        bw.flush();        bw.close();        br.close();    }}
0 0