【java】网络编程 UDP通信实例

本文介绍了如何使用Java的DatagramSocket和DatagramPacket类进行UDP协议编程,包括发送数据(创建Socket、打包数据并发送)和接收数据(创建Socket、接收数据并解析)。特别强调了并发执行时的顺序问题,确保接收端在发送端之前运行。

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

网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换

java网络编程相关类  IP地址:InetAddress /InetSocketAddress

                                  URL UDP:    DatagramSocket,DatagramPacket

                                  TCP:ServerSocket Socket 

UDP通信原理

java提供了DatagramSocket类作为基于UDP协议的Socket,DatagramPocket类表示数据报包,使用此类对象创建数据并把数据打包

UDP发送数据

import java.io.IOException;
import java.net.*;

public class UDPSocketSend {
    public static void main(String[] args) throws IOException {
        //创建发送端的Socket对象
        DatagramSocket address=new DatagramSocket();
        //创建数据,并把数据打包
        byte[] bys="hello world".getBytes();
        DatagramPacket ds=new DatagramPacket(bys,bys.length,InetAddress.getByName("172.20.2.154"),10086);
        //调用DatagramSocket对象的方法发送数据
        address.send(ds);
        //关闭发送端
        address.close();
    }
}

 

UDP接收数据

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

public class UDPReceive {
    public static void main(String[] args) throws IOException {
        //创建接收端的Socket对象
        DatagramSocket ds=new DatagramSocket(10086);
        //创建数据包,用于接收数据
        byte[] bys=new byte[1024];
        DatagramPacket dp=new DatagramPacket(bys,bys.length);
        //利用DatagramSocket对象的方法接收数据
        ds.receive(dp);
        //解析数据包,并把数据在控制台上显示
        //byte[] getData() 返回数据缓冲区
        byte[] data=dp.getData();
        String dataString=new String(data,0,data.length);
        System.out.println("数据是"+dataString);
        //关闭接收端
        ds.close();
    }
}

若是先运行发送方再运行接收方,则收不到数据,因为发送速度太快,在发送方关闭之后接收方收不到数据

所以要先运行接收方,再运行发送方

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛酸菜吃鸭子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值