UDP传输数据

UDP传输数据

DatagramSocket:通讯的数据管道
常用方法:send(发送)和receive(接收)
绑定一个IP和Port(可选多网卡)
DatagramPacket:封装数据
地址标签:目的地IP+Port
UdpRecv.java

public class UdpRecv {
    public static void main(String[] args) throws Exception {
        DatagramSocket dr = new DatagramSocket(3000);
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf,1024);
        System.out.println("我在等待消息");
        dr.receive(dp);
        System.out.println("我已接收到消息");
        String strRecv = new String(dp.getData(),0, dp.getLength())+
                "from"+dp.getAddress().getHostAddress()+":"+dp.getPort();
        System.out.println(strRecv);
        System.out.println("我要开始发送消息了");
        String str = new String("你好,UDP");
        DatagramPacket dp2 = new DatagramPacket(str.getBytes(StandardCharsets.UTF_8),
                str.length(), InetAddress.getByName("127.0.0.1"),dp.getPort());
        dr.send(dp);
        System.out.println("发送消息结束了");
    }
}

在这里插入图片描述

UdpSend.java

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;

public class UdpSend {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds = new DatagramSocket();
        String str = "Hello UDP";
        DatagramPacket dp = new DatagramPacket(str.getBytes(StandardCharsets.UTF_8),
                str.length(), InetAddress.getByName("127.0.0.1"),3000);
        System.out.println("我要发送数据了");
        ds.send(dp);
        System.out.println("我发送数据结束了");
        Thread.sleep(1000);
        byte[] buf = new byte[1024];
        DatagramPacket dp2 = new DatagramPacket(buf,1024);
        System.out.println("我开始接收数据了");
        ds.receive(dp2);
        System.out.println("我接受结束结束了");
        String str2 = new String(dp.getData(),0,dp2.getLength())+
                "fron"+dp.getAddress().getHostAddress()+":"+dp.getPort();
        System.out.println(str2);
    }
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值