udp网络编程

    UDP网络编程是一种基于用户数据报协议(UDP)的网络通信方式。

     相比于TCP网络编程,UDP网络编程更加简单,适用于一些不要求稳定连接和安全性的场景,如视频流传输、实时游戏等。

  UDP广播是UDP网络编程中的一种特殊形式,它不分服务器和客户端,只有发送端和接收端。      UDP广播不提供连接状态的维护,因此安全性较差,但在一些特定应用场景下具有一定优势。

下面是UDP网络编程的基本步骤:

  1. 发送端:

- 创建套接字:DatagramSocket ds = new DatagramSocket();

- 封装数据包:DatagramPacket dp = new DatagramPacket( 数据的字节数组, 数据的字节数组的长度, 信息发送的目的地主机, 信息发送目的地的端口 );

- 发送数据包:ds.send(dp);

2. 接收端: - 创建套接字并指定端口:DatagramSocket ds = new DatagramSocket(端口号);

- 准备容器:byte[] bytes = new byte[1024];

- 封装数据包:DatagramPacket dp = new DatagramPacket(容器名称,容器长度);

- 接收数据包:ds.receive(dp); 将接收到的信息放入容器bytes中。

- 解析数据包:

- 从数据包中获取数据:byte[] receivedData = dp.getData();

- 从数据包中获取数据长度:int dataLength = dp.getLength();

- 打印接收到的信息:System.out.println(new String(receivedData, 0, dataLength, "utf-8"));

当涉及到UDP网络编程时,以下是一些示例代码来解释每个步骤的实现过程: 发送端代码

import java.net.*;

public class UDPSender {
    public static void main(String[] args) {
        try {
            // 创建套接字
            DatagramSocket ds = new DatagramSocket();

            // 准备要发送的数据
            String message = "Hello, UDP!";
            byte[] sendData = message.getBytes();

            // 封装数据包
            InetAddress destinationAddress = InetAddress.getByName("目的地IP地址");
            int destinationPort = 12345;
            DatagramPacket dp = new DatagramPacket(sendData, sendData.length, destinationAddress, destinationPort);

            // 发送数据包
            ds.send(dp);

            // 关闭套接字
            ds.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

接收端代码:

import java.net.*;

public class UDPReceiver {
    public static void main(String[] args) {
        try {
            // 创建套接字并指定端口
            int port = 12345;
            DatagramSocket ds = new DatagramSocket(port);

            // 准备接收数据的容器
            byte[] receiveData = new byte[1024];

            // 封装数据包
            DatagramPacket dp = new DatagramPacket(receiveData, receiveData.length);

            // 接收数据包
            ds.receive(dp);

            // 解析数据包
            byte[] receivedData = dp.getData();
            int dataLength = dp.getLength();
            String message = new String(receivedData, 0, dataLength, "utf-8");
            System.out.println("接收到的信息:" + message);

            // 关闭套接字
            ds.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值