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();
            }
        }
    }
    
     
  • 相关阅读:
    c#整除
    CR尼尔森相关人士曾表示,Facebook是美国校园社团文化的在线延续,但在中国并不具备这样的环境。社区用户群的年轻化以及浓郁的乡情或地域情节使得国内社区网站更趋向于同城交友平台,而并不是个人社交圈的扩展。
    Java / 第8章 类的基础知识
    汇编/ 第一章: 基础知识(甲)
    天若有情天易老 人间正道是沧桑
    Java/1 7章
    产品经理之竞品分析下
    产品经理之产品竞品上
    产品经理之产品调研
    Java数据类型
  • 原文地址:https://www.cnblogs.com/loaderman/p/6411254.html
Copyright © 2011-2022 走看看