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

来源: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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值