zoukankan      html  css  js  c++  java
  • (1)使用UDP协议编写简单发送方和接收方Demo

    (1)使用UDP协议编写简单发送方和接收方Demo

    代码走完后结束运行,所以发送和接受都是一次运行就会结束。

    一.编写UDP协议接收方

    package demo.soket.udp;
      ​
      import java.io.IOException;
      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      import java.net.InetAddress;
      import java.net.SocketException;
      import java.net.UnknownHostException;
      ​
      /**
       * UDP协议发送方
       * UDP协议特点:
       * 1.数据打包
       * 2.不需要建立连接
       * 3.不可靠协议,接不接收都不会报错
       * 4.速度快
       * 5.数据包限制在64k
       */
      public class sendUdp {
          public static void main(String[] args) {
              /**
               *  DatagramSocket:用于UDP协议的socket
               *  
               *  1.创建对象,UDP协议
               *  2.把想要发送的的数据打包(并且不超过64k)
               *  3.数据发送 
               *  send(DatagramPacket p) 
               *  4.关闭连接
               */
              DatagramSocket ds=null;
              try {
                  //1.创建对象 ,UDP协议
                  ds=new DatagramSocket();
                  /**
                   * 2.把想要发送的的数据打包(并且不超过64k)
                   * 构造用于发送长度的分组的数据报包 length指定主机上到指定的端口号。 
                   */
                  byte[] buf="UDP协议的demo测试数据".getBytes();
                  InetAddress address=InetAddress.getByName("192.168.95.2");
                  //指向接收方的ip和端口
                  DatagramPacket p=new DatagramPacket(buf, buf.length, address, 10086);
                  //3.数据发送 
                  ds.send(p);
              } catch (SocketException e) {
                  e.printStackTrace();
              } catch (UnknownHostException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }finally {
                  //4.关闭连接
                  if(ds!=null) {
                      ds.close();
                  }
              }   
          }
      }

    二.编写UDP协议服务端

     package demo.soket.udp;
      ​
      import java.io.IOException;
      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      import java.net.SocketException;
      import java.net.UnknownHostException;
      ​
      //UDP协议接收方
      public class receiveUdp {
          public static void main(String[] args) {
              /**
               *  1.创建接收方对象:new DatagramSocket(10086);需指定接收的端口
               *  2.创建一个数据包
               *  3.从DatagramPacket包中接收数据
               *  receive(DatagramPacket p) 从此套接字接收数据报包。 
               */
              DatagramSocket ds=null;
              try {
                  //1.创建接收方对象,指定那个端口接收数据
                  ds=new DatagramSocket(10086);
                  //2.创建一个数据包,指定数据
                  byte[] buf=new byte[1024];
                  DatagramPacket dp=new DatagramPacket(buf, buf.length);
                  //3.接收数据,阻塞方法
                  ds.receive(dp);
                  System.out.println("端口:"+dp.getPort());
                  System.out.println("ip:"+dp.getAddress());
                  //实际dp不一定有1024个字节
                  byte[] b=dp.getData();
                  //有多少取多少
                  String str=new String(b, 0,dp.getLength());
                  System.out.println("接收到的数据:"+str);
              } catch (SocketException e) {
                  e.printStackTrace();
              } catch (UnknownHostException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              }
          }
      }
      ​

    三 .demo运行

    1.先运行服务端
    2.其次运行发送方

  • 相关阅读:
    java实现同步的两种方式
    JAVA线程概念
    XML基础总结
    JAVA使用和操作properties文件
    JAVA序列化基础知识
    easyui 在编辑状态下,动态修改其他列值。
    Activiti初学问题,求解
    java web--DOM
    java web(1)
    Java WEB
  • 原文地址:https://www.cnblogs.com/KdeS/p/13265998.html
Copyright © 2011-2022 走看看