java之网络编程基础学习(1)

1.什么是网络
网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。在数学上,网络是一种图,一般认为专指加权图。
在计算机领域中,网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。
TCP和UDP
TCP 传输控制协议 点到点 安全 有连接 可靠
UDP 用户数据报文协议 点到面 不安全 无连接 不可靠

IP:定位一个节点:计算机、路由、通讯设备等

package com.loc;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * IP:定位一个节点:计算机、路由、通讯设备等
 * InetAddress: 多个静态方法
 * 1、getLocalHost:本机
 * 2、getByName:根据域名DNS |  IP地址 -->IP
 *
 * 两个成员方法
 * 1、getHostAddress: 返回地址
 * 2、getHostName:返回计算机名
 * 
 *
 */
public class IPtest {

	public static void main(String[] args) throws UnknownHostException {
	//使用getLocalHost方法创建InetAddress对象 本机
		InetAddress addr = InetAddress.getLocalHost();
		System.out.println(addr.getHostAddress());
		System.out.println(addr.getHostName());
		
		//根据域名得到netAddress对象
		addr = InetAddress.getByName("www.163.com");
		//返回163服务器的IP
		System.out.println(addr.getHostAddress());
		System.out.println(addr.getHostName());
		
		//根据ip得到InetAddress对象
		addr = InetAddress.getByName("123.56.138.176");
		System.out.println(addr.getHostAddress());  //返回 shsxt的ip:123.56.138.176
		System.out.println(addr.getHostName());  //输出ip而不是域名。如果这个IP地 址不存在或DNS服务器不允许进行IP地址和域名的映射,

	}

}

端口:区分软件

package com.loc;

import java.net.InetSocketAddress;

/**
 * 端口
 * 1.区分软件
 * 2.2个字节0-65535 UDP TCP
 * 3.同一个协议端口不能冲突
 * 4.定义端口越大越好
 * 5.动态端口的范围是从1024到65535
 * InetSocketAddress
 * 1.构造器
 * new InetSocketAddress(地址|域名,端口);
 * 2.方法
 * getAddress()
 * getPort()
 * getHostName();
 * @author hejun
 *
 */
public class PortTest {

	public static void main(String[] args) {
		//包含端口号
		InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080);
		InetSocketAddress socketAddress2 = new InetSocketAddress("localhost",9000);
		System.out.println(socketAddress.getHostName());
		System.out.println(socketAddress.getAddress());
		System.out.println(socketAddress2.getAddress());
	}

}

在这里插入图片描述

package com.loc;

import java.net.MalformedURLException;
import java.net.URL;

public class URlTest {
/***
 * URL:统一资源定位器 互联网三大基石之一(html http)区分资源
 *1.协议
 *
 *2.域名,计算机
 *3.端口:默认80
 *4.请求资源
 * * @param args
 * @throws MalformedURLException 
 */
	public static void main(String[] args) throws MalformedURLException {
		URL url = new URL("http://www.baidu.com:80/index.html?uname=shsxt&age=18#a");
		//获取四个值
				System.out.println("协议:"+url.getProtocol());
				System.out.println("域名|ip:"+url.getHost());
				System.out.println("端口:"+url.getPort());
				System.out.println("请求资源1:"+url.getFile());
				System.out.println("请求资源2:"+url.getPath());
				
				//参数
				System.out.println("参数:"+url.getQuery());
				//锚点
				System.out.println("锚点:"+url.getRef());
			}

		}

网络爬虫
普通网站

package com.loc;

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

/**
 * 网络爬虫原理
 * @author hejun
 *
 */
public class SpiderTest01 {
	//普通网站爬
	

	public static void main(String[] args) throws IOException {
		//获取URL
        //URL  url = new URL("https://www.qq.com");
		URL  url = new URL("https://www.dianping.com");
         //URL  url = new URL("https://www.imooc.com");
		//下载资源
		InputStream is = url.openStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
		String msg = null;
		while(null!=(msg=br.readLine())) {
			System.out.println(msg);
		}
		br.close();
		//分析数据
		
		
		//处理

	}

}

模拟浏览器爬

package com.loc;

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

public class SpiderTest02 {

	public static void main(String[] args) throws IOException {
		//获取URL
        //URL  url = new URL("https://www.qq.com");
		URL  url = new URL("https://www.dianping.com");
         //URL  url = new URL("https://www.imooc.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/58.0.3029.81 Safari/537.36");
		BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
		String msg = null;
		while(null!=(msg=br.readLine())) {
			System.out.println(msg);
		}
		br.close();
		//分析数据
		
		
		//处理
	}

}

喜欢我的可以关注我,我们可以一起交流学习

微信公众号:

让我爱上它Computer

qq群:473989408

发布了68 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42913025/article/details/99291073