第39天学习打卡(UDP多线程在线咨询 URL)

UDP多线程在线咨询

 package com.kuang.chat;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.InetSocketAddress;
 
 public class TalkSend implements Runnable{
     DatagramSocket socket = null;
     BufferedReader reader = null;
 
     private int fromPort;
     private String toIP;
     private int toPort;
 
     public TalkSend(int fromPort, String toIP, int toPort) {
         this.fromPort = fromPort;
         this.toIP = toIP;
         this.toPort = toPort;
         try{
         socket = new DatagramSocket(fromPort);
         reader = new BufferedReader(new InputStreamReader(System.in));
 
        }catch (Exception e){
             e.printStackTrace();
        }
 
    }
 
     public TalkSend(){
 
 
    }
     @Override
     public void run(){
 
 
         //准备数据:控制台读取System.in
 
         while(true) {
             try{
             String data = reader.readLine();
             byte[] datas = data.getBytes();
 
             DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIP,this.toPort));
 
             socket.send(packet);
             if (data.equals("bye")) {
                 break;
            }
                }catch (Exception e){
                 e.printStackTrace();
            }
            }
         socket.close();
        }
 
    }
 
 package com.kuang.chat;
 
 import java.io.IOException;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.SocketException;
 
 public class TalkReceive implements Runnable{
     DatagramSocket socket = null;
     private int port;
     private String msgFrom;
 
     public TalkReceive(int port,String msgFrom) {
         this.port = port;
         this.msgFrom = msgFrom;
         try {
             socket = new DatagramSocket(port);
        } catch (Exception e) {
             e.printStackTrace();
        }
    }
 
     @Override
 
     public  void run(){
 
         while (true) {
             //准备接收包裹
         try {
             byte[] container = new byte[1024];
             DatagramPacket packet = new DatagramPacket(container, 0, container.length);
             socket.receive(packet);//阻塞式接收包裹
 
             //断开链接 bye
             byte[] data = packet.getData();
             String receiveData = new String(data, 0, data.length);
             System.out.println(msgFrom + ":" + receiveData);
 
             if (receiveData.equals("bye")) {
                 break;
            }
        }catch (IOException e){
             e.printStackTrace();
        }
 
 
 
        }
         socket.close();
    }
    }
 
 
 package com.kuang.chat;
 
 public class TalkStudent {
     public static void main(String[] args) {
         //开启两个线程
         new Thread(new TalkSend(7777,"localhost",9999)).start();
         new Thread(new TalkReceive(8888,"老师")).start();
    }
 }
 
 package com.kuang.chat;
 
 public class TalkTeacher {
     public static void main(String[] args) {
         new Thread(new TalkSend(55555,"localhost",8888)).start();
         new Thread(new TalkReceive(9999,"学生")).start();
    }
 }
 

URL

https://www.baidu.com/

统一资源定位符:定位资源的,定位互联网上的某一个资源

DNS域名解析 www.baidu.com 解析为xxx.x..x..x

 协议://ip地址:端口/项目名/资源
 package com.kuang.lesson10;
 
 import java.net.MalformedURLException;
 import java.net.URL;
 
 public class URLDemo01 {
     public static void main(String[] args) throws MalformedURLException {
         URL url = new URL("http://localhost:8080/helloworld/index.jsp?username=kuangshen&password=123");
         System.out.println(url.getProtocol());//协议
         System.out.println(url.getHost());//主机ip
         System.out.println(url.getPort());//端口
         System.out.println(url.getPath());//文件
         System.out.println(url.getFile());//全路径
         System.out.println(url.getQuery());//参数
 
 
    }
 }
 

下载资源:

 package com.kuang.lesson10;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.DatagramSocket;
 import java.net.HttpURLConnection;
 import java.net.URL;
 
 public class UrlDown {
     public static void main(String[] args) throws IOException {
         //1.下载地址
         URL url = new URL("http://localhost:8080/qinjiang/SecurityFile.txt");
         //2.连接到这个资源HTTP
         HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
         InputStream inputStream = urlConnection.getInputStream();
         FileOutputStream fos = new FileOutputStream("SecurityFile.txt");
         byte[] buffer = new byte[1024];
         int len;
         while((len=inputStream.read(buffer))!=-1){
             fos.write(buffer,0,len);//写出这个数据
 
 
 
        }
         fos.close();
         inputStream.close();
         urlConnection.disconnect();//断开连接
    }
 
 
 }
 

 

posted @ 2021-02-16 16:29  豆豆tj  阅读(43)  评论(0)    收藏  举报