Java------网络编程----IP

概念

java 虚拟路径转 java虚拟ip地址_IP


java 虚拟路径转 java虚拟ip地址_IP_02


java 虚拟路径转 java虚拟ip地址_Java_03

IP

  • IP地址分类:
  1. IPV4:32为地址,以点分十进制表示,如192.168.0.1
  2. IPV6:128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
  • 特殊的IP:
  1. 127.0.0.1 本机地址
  2. 192.168.0.0—092.068.255.255 私有地址,属于非注册地址,专门为组织机构内部使用。
  • InterAddress:多个静态方法
  1. getLocalhost:本机
  2. getByName:根据域名DNS | IP地址–>IP
  • 两个成员方法
  1. getHostAddress:返回地址
  2. getHostName:返回计算机名
package com.briup.ip;

import java.net.InetAddress;
import java.util.Arrays;
/**
 * IP:定位一个节点
 * InterAddress:多个静态方法
 * 1、getLocalhost:本机
 * 2、getByName:根据域名DNS | IP地址-->IP
 * 
 * 两个成员方法
 * 1、getHostAddress:返回地址
 * 2、getHostName:返回计算机名
 * @author Vijay
 */
public class IPTest {
	public static void main(String[] args) {
		try {
			
			InetAddress ip1 = InetAddress.getLocalHost();
			System.out.println(ip1.getHostAddress());//返回地址
			System.out.println(ip1.getHostName());  //返回计算机名
			
			InetAddress ip2 = InetAddress.getByName("172.0.0.1");
			System.out.println(ip2.getCanonicalHostName());
			System.out.println(ip2.getHostAddress());//返回地址
			System.out.println(ip2.getHostName());  //返回计算机名
			System.out.println(Arrays.toString(ip2.getAddress()));
			System.out.println(ip2.isReachable(1000));
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

端口Port

  • 端口是虚拟的概念,是区分软件的
  • 端口(0—65535):
  1. 公认端口:0—1023 比如80端口分配给www,21端口分配给FTP
  2. 注册端口:1024—49151 分配给用户进程或程序,1521分配给Oracle,3306分配给MySQL,8080分配给tomcat
  3. 动态/私有端口:49152—65535
  • 查看端口cmd命令:
  1. 所有端口:netstat -ano
  2. 指定端口:netstat -ano|findstr “808”
  3. 指定进程:tasklist|findstr “808”
  4. 具体程序:使用任务管理器(详细信息)查看PID
  • InetSocketAddress
  1. 构造器
    new InetSocketAddress(地址|域名,端口);
  2. 方法
    getAddress() 获取地址
    getPort() 获取端口
    getHostName() 获取主机名
package com.briup.ip;

import java.net.InetSocketAddress;

/**
 * 端口
 * 1.区分软件
 * 2.2个字节 0-65535 UDP TCP
 * 3.同一个协议端口不能冲突
 * 4.定义端口越大越好
 * InetSocketAddress
 * 1、构造器
 * new InetSocketAddress(地址|域名,端口);
 * 2、方法
 * getAddress()//获取地址
 * getPort()//获取端口
 * getHostName()//获取主机名
 * @author Vijay
 *
 */
public class PortTest {

	public static void main(String[] args) {
		//包含端口
		InetSocketAddress is1 = new InetSocketAddress("127.0.0.1", 8080);//地址,端口
		InetSocketAddress is2 = new InetSocketAddress("localhost", 9000);//域名,端口
		System.out.println(is1.getHostName());//获取主机名
		System.out.println(is1.getAddress());//获取地址
		System.out.println(is2.getAddress());
		System.out.println(is2.getPort()); //获取端口
	}

}

URL

  • URI两种形式:URL和URN
    URI:统一资源标识符
    URL:统一资源定位符
    URN:统一资源名称
  • URL由四部分组成
    协议
    存放资源的主机域名
    端口号
    资源文件名
  • 网络三大基石:html、 http、 url
package com.briup.ip;

import java.net.URL;

/**
 * URL:统一资源定位器,互联网三大基石之一(html http)区分资源
 * 1、协议
 * 2、域名、计算机
 * 3、端口:默认80
 * 4、请求资源
 * http://www.baidu.com:80/index.html?uname=shsxt&age=18#a
 * 
 * @author Vijay
 *
 */
public class UrlTest {

	public static void main(String[] args) throws Exception {
		URL url = new URL("http://www.baidu.com:80/index.html?uname=shsxt&age=18#a");
		
		System.out.println(url.getProtocol());//返回协议
		System.out.println(url.getHost());//返回域名|ip
		System.out.println(url.getPort());//返回端口
		System.out.println(url.getDefaultPort());//获取与此 URL的协议的默认端口号。
		System.out.println(url.getAuthority());//返回域名加端口
		System.out.println(url.getContent());//获取此URL的内容
		System.out.println(url.getFile());//返回请求资源  获取此 URL的文件名。
		System.out.println(url.getPath());//返回请求资源URI 获取此 URL的路径部分。
		
		//参数
		System.out.println(url.getQuery());
		//锚点
		System.out.println(url.getRef());
		
	}
}

网络爬虫

  • 网络爬虫原理
  1. 给定一个URL
  2. 下载资源
  3. 分析(正则表达式)
  4. 处理(抽取、清洗、存储)
package com.briup.ip;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

/**
 * 网络爬虫原理
 * 1.给定一个URL
 * 2.下载资源
 * 3.分析(正则表达式)
 * 4.处理(抽取、清洗、存储)
 * @author Vijay
 *
 */
public class SpiderTest01 {
	
	public static void main(String[] args) throws Exception {
		//获取URL
		URL url = new URL("https://www.jd.com");
		//下载资源
		InputStream is = url.openStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
		String msg = null;
		while((msg =br.readLine()) != null) {
			System.out.println(msg);
		}
		br.close();
		//分析
		
		//处理
	}
}
package com.briup.ip;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 网络爬虫原理 + 模拟浏览器
 * @author Vijay
 *
 */
public class SpiderTest02 {
	
	public static void main(String[] args) throws Exception {
		//获取URL
		URL url = new URL("https://www.dianping.com");
		//下载资源
		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		conn.setRequestMethod("GET");
		conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36");
		BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
		String msg = null;
		while((msg =br.readLine()) != null) {
			System.out.println(msg);
		}
		br.close();
		//分析
		
		//处理
	}
}