zoukankan      html  css  js  c++  java
  • UDP传输

    • 1.发送Send
      • 创建DatagramSocket, 随机端口号
      • 创建DatagramPacket, 指定数据, 长度, 地址, 端口
      • 使用DatagramSocket发送DatagramPacket
      • 关闭DatagramSocket
    • 2.接收Receive
      • 创建DatagramSocket, 指定端口号
      • 创建DatagramPacket, 指定数组, 长度
      • 使用DatagramSocket接收DatagramPacket
      • 关闭DatagramSocket
      • 从DatagramPacket中获取数据
    • 3.接收方获取ip和端口号
      • String ip = packet.getAddress().getHostAddress();
      • int port = packet.getPort();

     


    UDP传输优化

    • 接收端Receive
    • DatagramSocket socket = new DatagramSocket(6666);                       //创建socket相当于创建码头
      DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);       //创建packet相当于创建集装箱
      
      while(true) {
          socket.receive(packet);                                             //接收货物
           byte[] arr = packet.getData();
          int len = packet.getLength();
          String ip = packet.getAddress().getHostAddress();
          System.out.println(ip + ":" + new String(arr,0,len));
      }
      
       
    • 发送端Send

      DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头
      Scanner sc = new Scanner(System.in);
      
      while(true) {
          String str = sc.nextLine();
          if("quit".equals(str))
              break;
          DatagramPacket packet =                             //创建packet相当于创建集装箱
                  new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
          socket.send(packet);            //发货
      }
      socket.close();
      
       

     


     

    UDP传输多线程

    发送和接收在一个窗口完成

    public class Demo_MoreThread {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            new Receive().start();
    
            new Send().start();
        }
    
    }
    
    class Receive extends Thread {
        public void run() {
            try {
                DatagramSocket socket = new DatagramSocket(6666);                   //创建socket相当于创建码头
                DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);   //创建packet相当于创建集装箱
    
                while(true) {
                    socket.receive(packet);                                             //接收货物
                    byte[] arr = packet.getData();
                    int len = packet.getLength();
                    String ip = packet.getAddress().getHostAddress();
                    System.out.println(ip + ":" + new String(arr,0,len));
                }
            } catch (IOException e) {
    
                e.printStackTrace();
            }
        }
    }
    
    class Send extends Thread {
        public void run() {
            try {
                DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头
                Scanner sc = new Scanner(System.in);
    
                while(true) {
                    String str = sc.nextLine();
                    if("quit".equals(str))
                        break;
                    DatagramPacket packet =                             //创建packet相当于创建集装箱
                            new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);
                    socket.send(packet);            //发货
                }
                socket.close();
            }  catch (IOException e) {
    
                e.printStackTrace();
            }
        }
    }
    
     
  • 相关阅读:
    13.ng-value
    Android 下使用 JSON 实现 HTTP 请求,外加几个示例!
    PHP完整的AES加解密算法使用及例子(256位)
    常用对称加密算法(DES/AES)类(PHP)
    随机字符串生成算法
    JAVA实现AES加密
    Base64的好处
    什么是VC、PE、LP、GP?
    mysql update操作
    iOS开发:用DES对字符串加解密
  • 原文地址:https://www.cnblogs.com/loaderman/p/6411254.html
Copyright © 2011-2022 走看看