zoukankan      html  css  js  c++  java
  • 网络相关

    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

     

  • 相关阅读:
    ACM模板——次短路及K短路
    ACM模板——最小生成树
    Leetcode-743 Network Delay Time(网络延迟时间)
    ACM模板——最短路
    HDU-2037 今年暑假不AC
    Leetcode-1015 Numbers With Repeated Digits(至少有 1 位重复的数字)
    Leetcode-1014 Capacity To Ship Packages Within D Days(在 D 天内送达包裹的能力)
    Leetcode-1013 Pairs of Songs With Total Durations Divisible by 60(总持续时间可被 60 整除的歌曲)
    Leetcode-1012 Complement of Base 10 Integer(十进制整数的补码)
    LeetCode--204--计数质数
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/11413882.html
Copyright © 2011-2022 走看看