JAVA 实现收发 UDP 请求

Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

发送

JAVA 实现收发 UDP 请求
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*
 * 实现 UDP 协议的发送端:
 *     实现封装数据的类 java.net.DatagramPacket 将你的数据包装
 *     实现数据传输类    java.net.DatagramSocket 将数据包发出去
 *
 *    实现步骤:
 *        1. 创建 DatagramPacket 对象,封装数据,接收的地址和端口
 *        2. 创建 DatagramSocket 对象,
 *        3. 调用 DatagramSocket 类的方法 send,发送数据包
 *        4. 关闭资源
 *
 *    DatagramPacket 构造方法:
 *        DatagramPacket(byte[] buf,int length,InetAddress address,int port)
 *
 *    DatagramSocket 构造方法:
 *        DatagramSocket() 空参数
 *        方法:send(DatagramPacket d)
 *
 *
 */
public class UDPSendTest {public static void main(String[] args) throws Exception {
// 创建发送端 Socket 对象
        DatagramSocket ds = new DatagramSocket();
// 创建数据并打包
        String s = "My name is happywindman";
        byte[] bytes = s.getBytes();
        int length = s.length();
        InetAddress ip = InetAddress.getByName("127.0.0.1");// 根据自己主机的 ip 地址或者主机名
        int port = 10086;
        DatagramPacket dp = new DatagramPacket(bytes, length, ip, port);
// 发送数据
        ds.send(dp);
// 释放资源
        ds.close();}
}

接收

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

/*
 *     实现 UDP 接收端
 *         实现封装数据包 java.net.DatagramPacket 将数据接收
 *         实现输出传输    java.net.DatagramSocket 接受数据包
 *
 *     实现步骤:
 *         1. 创建 DatagramSocket 对象,绑定端口号
 *               要和发送数据端口号一致
 *         2. 创建字节数组,接受发来的数组
 *         3. 创建数据包对象 DatagramPacket
 *         4. 调用 DatagramSocket 对象方法 receive(DatagramPacket dp)
 *               接受数据,数据放在数据包中
 *         5. 拆包
 *                 发送的 IP 地址
 *                  数据包对象 DatagramPacket() 方法 getAddress() 获取的是发送端的 IP 地址对象
 *                 接受到的字节个数
 *                  数据包对象 DatagramPacket() 方法 getLength()
 *                 发送方的端口号
 *              数据包对象 DatagramPacket() 方法 getPort()
 *         6. 关闭资源
 */
public class UDPReceiveTest {public static void main(String[] args) throws Exception {
// 创建接收端 Socket 对象
        DatagramSocket ds = new DatagramSocket(10086);
// 接收数据
        byte[] bytes = new byte[1024];
        int length = bytes.length;
        DatagramPacket dp = new DatagramPacket(bytes, length);
        ds.receive(dp);
        // 解析数据 获取地址 带斜杠
        InetAddress address = dp.getAddress();
        // 获取发送端的 IP 地址对象
        String ip = address.getHostAddress();
        // 获取发送的端口号
        int port = dp.getPort();
        byte[] data = dp.getData();
        int len = dp.getLength();
// 输出数据
//        System.out.println(address);
        System.out.println(String.format(" 发送方地址:%s:%s", ip, port));
        System.out.println(new String(data, 0, len));
        System.out.println(new String(bytes, 0, len));
        ds.close();}
}

手机扫描二维码访问

本文标题:《JAVA 实现收发 UDP 请求》作者:极四维博客
原文链接:https://cway.top/post/865.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031

搜索

控制面板

您好,欢迎到访网站!
  查看权限

最新留言

文章归档

  • 订阅本站的 RSS 2.0 新闻聚合