网络相关

IP:

package com.sxt.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());  //返回:192.168.1.110
        System.out.println(addr.getHostName());  //输出计算机名
        
        //根据域名得到InetAddress对象
        addr = InetAddress.getByName("www.baidu.com"); 
        System.out.println(addr.getHostAddress());  //返回 baidu服务器的ip:
        System.out.println(addr.getHostName());  //输出:www.shsxt.com
        
        //根据ip得到InetAddress对象
        addr = InetAddress.getByName("61.135.169.121"); 
        System.out.println(addr.getHostAddress());  //返回 baidu的ip:61.135.169.121
        System.out.println(addr.getHostName());  //输出ip而不是域名。如果这个IP地 址不存在或DNS服务器不允许进行IP地址和域名的映射,

    }

}
View Code

端口:

  查看所有端口: netstat -ano

  查看指定端口: netstat -ano|findstr "808"

  查看指定进程: tasklist|finder "808"
  

package com.sxt.loc;

import java.net.InetSocketAddress;
/**
 * 端口
 * 1、区分软件
 * 2、2个字节 0-65535  UDP TCP
 * 3、同一个协议端口不能冲突
 * 4、定义端口越大越好
 * InetSocketAddress 
 * 1、构造器
 *   new InetSocketAddress(地址|域名,端口);
 * 2、方法
 *  getAddress​()  
 *  getPort()
 *  getHostName()
 * @author 裴新 QQ:3401997271
 *
 */
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());
        System.out.println(socketAddress2.getPort());

    }

}

/*
 * 
     192.168.60.255
    admindeMacBook-Pro.local
    61.135.169.121
    www.baidu.com
    61.135.169.121
    61.135.169.121
*/
View Code

URL:

package com.sxt.loc;

import java.net.MalformedURLException;
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 
 *
 */
public class URLTest01 {

    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());
    }

}

/**
 * 
    协议:http
    域名|ip:www.baidu.com
    端口:80
    请求资源1:/index.html?uname=shsxt&age=18
    请求资源2:/index.html
    参数:uname=shsxt&age=18
    锚点:a

 * 
 * */
View Code

抓取数据:

package com.sxt.loc;

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

/**
 * 网络爬虫的原理
 * 
 * 
 *
 */
public class SpiderTest01 {

    public static void main(String[] args) throws Exception {
        //获取URL
        URL url =new URL("https://www.jd.com");
        //URL url =new URL("https://www.dianping.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();
        //分析
        //处理。。。。
    }

}
View Code
package com.sxt.loc;

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

/**
 * 网络爬虫的原理 +模拟浏览器
 * 
 * 
 *
 */
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/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();
        //分析
        //处理。。。。
    }

}
View Code

UDP:

客户端和服务端发送接收数据

package com.sxt.udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * 基本流程: 接收端
 * Address already in use: Cannot bind  同一个协议下端口不允许冲突
 * 1、使用DatagramSocket  指定端口 创建接收端
 * 2、准备容器 封装成DatagramPacket 包裹
 * 3、阻塞式接收包裹receive​(DatagramPacket p)
 * 4、分析数据
 *    byte[]  getData​()
 *                getLength​()
 * 5、释放资源
 * 
 *
 */
public class UdpServer {

    public static void main(String[] args) throws Exception {
        System.out.println("接收方启动中.....");
        // 1、使用DatagramSocket  指定端口 创建接收端
        DatagramSocket server =new DatagramSocket(6666);
        // 2、准备容器 封装成DatagramPacket 包裹
        byte[] container =new byte[1024*60];
        DatagramPacket packet = new DatagramPacket(container,0,container.length);
        // 3、阻塞式接收包裹receive​(DatagramPacket p)
        server.receive(packet); //阻塞式
        // 4、分析数据
        //    byte[]  getData​()
        //                getLength​()
         byte[]  datas =packet.getData();
         int len = packet.getLength();
         System.out.println(new String(datas,0,len));
         
        // 5、释放资源
         server.close();
    }

}
View Code
package com.sxt.udp;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * 基本流程: 发送端
 * 1、使用DatagramSocket  指定端口 创建发送端
 * 2、准备数据 一定转成字节数组
 * 3、 封装成DatagramPacket 包裹,需要指定目的地
 * 4、发送包裹send​(DatagramPacket p) * 
 * 5、释放资源
 * 
 *
 */
public class UdpClient {

    public static void main(String[] args) throws Exception {
        System.out.println("发送方启动中.....");
         // 1、使用DatagramSocket  指定端口 创建发送端
        DatagramSocket client =new DatagramSocket(8888);
         //2、准备数据 一定转成字节数组
        String data = "上海尚学堂";
        byte[] datas = data.getBytes();
         //3、 封装成DatagramPacket 包裹,需要指定目的地
        DatagramPacket packet =new DatagramPacket(datas,0,datas.length,
                new InetSocketAddress("localhost",6666));
        //4、发送包裹send​(DatagramPacket p) * 
        client.send(packet);
        // 5、释放资源
        client.close();
    }

}
View Code

 

原文地址:https://www.cnblogs.com/jiefangzhe/p/11413882.html