20day

day20

UDP多线程在线咨询

package com.yan.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();
      }

  }

   @Override
   public void run() {
       try{
           while (true){
               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.yan.chat;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
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 (SocketException e) {
           e.printStackTrace();
      }
  }

   @Override
   public void run() {
       while (true){

           try {
               //准备接收包裹
               byte[] container = new byte[1024];
               DatagramPacket packet = new DatagramPacket(container,0,container.length,new InetSocketAddress("localhost",8888));
               socket.receive(packet);//阻塞式接收包裹
               //断开连接
               byte[] data = packet.getData();
               String receiveData = new String(data, 0, packet.getLength());
               System.out.println(msgFrom+":"+receiveData);
               if (receiveData.equals("bye")){
                   break;
              }
          } catch (IOException e) {
               e.printStackTrace();
          }
      }
       socket.close();
  }
}
package com.yan.chat;

public class TalkStudent {
   public static void main(String[] args) {
       //1.开启两个线程
       new Thread(new TalkSend(7777,"localhost",9999)).start();
       new Thread(new TalkReceive(8888,"老师")).start();

  }
}
package com.yan.chat;

public class TalkTeacher {
   public static void main(String[] args) {
       new Thread(new TalkSend(5555,"localhost",8888)).start();
       new Thread(new TalkReceive(9999,"学生")).start();
  }
}

URL

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

DNS域名解析: www.baidu.com xxx.xxx.xx.xx将域名解析成IP


协议://IP地址:端口/项目名/资源
package com.yan.lesson04;

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

public class URLDemo01 {
   public static void main(String[] args) throws Exception {
       URL url = new URL("http://localhost:8080/helloworld/index.jsp?user=wangyan&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.yan.lesson04;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

//http://localhost:8080/wangyan/Security.txt
public class UrlDown {
   public static void main(String[] args) throws Exception {
       //1.下载地址
       URL url = new URL("http://localhost:8080/wangyan/Security.txt");
       //2.连接到这个资源 HTTP
       HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

       InputStream inputStream = urlConnection.getInputStream();

       FileOutputStream fos = new FileOutputStream("Security.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-04-27 15:16  卧剑之鱼  阅读(93)  评论(0)    收藏  举报