Java 基于UDP协议实现消息发送

发短信:不用连接,但需要知道对方的地址,客户端、服务端没有明确的界限,可以说没有客户端、服务端一说。

发送端

package lesson03;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 发送端
 */
public class UdpClientDemo1 {

  public static void main(String[] args) throws Exception {

    //1、建立一个 Socket
    DatagramSocket socket = new DatagramSocket();

    /**
     * 2、建个包
     */

    //需要发送的消息
    String msg = "你好啊,服务器!";

    //发送地址
    InetAddress localhost = InetAddress.getByName("localhost"); //主机
    //发送端口
    int port = 9090;

    /**
     * 五个参数:
     * @param  buf  msg.getBytes():需要发送的数据包
     * @param  offset  0:数据偏移量
     * @param  length  msg.getBytes().length:数据长度
     * @param  address  localhost:目标地址
     * @param  port  port:目标端口
     */
    DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);

    //3、发送包
    socket.send(packet);

    //4、关闭流
    socket.close();
  }

}

接收端

package lesson03;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * 接收端
 */
public class UdpServerDemo1 {

  public static void main(String[] args) throws Exception {

    //开放端口
    DatagramSocket socket = new DatagramSocket(9090);

    //接收数据包
    byte[] buffer = new byte[1024];
    DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);

    //接收
    socket.receive(packet); //阻塞接收

    //输出数据包地址
    System.out.println(packet.getAddress().getHostAddress());
    /**
     * 输出数据包数据
     * packet:Data 类型
     * 通过构造器转成 String 类型:new String();
     */
    System.out.println(new String(packet.getData(), 0, packet.getLength()));

    //关闭连接
    socket.close();

  }

}


最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:11604713672

猜你喜欢

转载自blog.csdn.net/weixin_51495453/article/details/112404005