42.java网络编程基础-UDP网络通信

本文介绍了使用Java的DatagramSocket和DatagramPacket类进行UDP网络通信的基本流程。通过创建发送端和接收端的DatagramSocket,建立数据包,并调用send和receive方法来实现数据的发送与接收。示例代码展示了如何发送和接收UDP数据报,强调了UDP协议的无连接性和不可靠性特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
UDP数据报通过数据报套接字 DatagramSocket 发送和接收, 系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。
DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。
UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。 如同发快递包裹一样。

在这里插入图片描述
在这里插入图片描述

UDP网络通信流程:

  1. DatagramSocket与DatagramPacket
  2. 建立发送端,接收端
  3. 建立数据包
  4. 调用Socket的发送、 接收方法
  5. 关闭Socket

发送端与接收端是两个独立的运行程序

package com.senior.internetsocket;

import org.junit.Test;

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

/**
 * @author eden
 * @Description
 * @create projectTest-com.senior.internetsocket:2021-05-14-13:15
 * @since
 */
public class UDPTest {

    @Test
    public void sender() throws IOException {
        //创建一个socket
        DatagramSocket datagramSocket = new DatagramSocket();

        //封装一个数据报在packet中
        String s = new String("hello,baidu.com");
        DatagramPacket packet = new DatagramPacket(s.getBytes(),0,s.length(),
                InetAddress.getLocalHost(),9999);

        //发送数据报
        datagramSocket.send(packet);

        datagramSocket.close();


    }

    @Test
    public void receiver() throws IOException {
        //创建一个socket
        DatagramSocket socket = new DatagramSocket(9999);

        byte[] buffer = new byte[100];
        DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);

        socket.receive(packet);

        //输出到控制台显示
        System.out.println(new String(packet.getData(), 0, packet.getLength()));

        socket.close();
    }

}

该博客图片来源于尚硅谷宋老师教学课件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值