UDP 实例
  HvTJUzsxOBtS 2023年11月25日 34 0


1、UPD接受端
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class MyUdpAccept {
    public static void main(String [] args) throws  Exception{
      byte[] buf=new byte[1024];//创建一个长度为1024的字节数组,用于接收数据
        //定义一个DatagramSocket对象,监听的端口号8954
        DatagramSocket ds=new DatagramSocket(8954);
        //定义一个DatagramPacket对象,用于接受数据
        DatagramPacket dp=new DatagramPacket(buf,1024);
        System.out.println("等待接受数据");
        ds.receive(dp);//等待接受数据,如果没有数据则会阻塞
        //调用DatagramPacket的方法获得接收的信息,包括内容,长度、IP地址和端口号
        String str=new String(dp.getData(),0,dp.getLength()) + "from" +
                dp.getAddress().getHostAddress()+":"+dp.getPort();
        System.out.println(str); //打印接受到的信息
        ds.close();
    }
}

创建一个接收端程序,用来接收数据。在创建DatagramSocket对象时,指定其监听端口8954,这样发送端就能通过这个端口和接受端进行通信了。
ds.receive(dp);//等待接受数据,如果没有数据则会阻塞。表示只有接受数据时才会继续向下执行。

运行起来:
等待接受数据
2、UDP发送端
import java.net.DatagramSocket;
import java.net.InetAddress;

public class MyUdpSend {
    public static void main(String [] args) throws  Exception{
        //创建一个DatagramSocket对象
        DatagramSocket ds=new DatagramSocket(3000);
        String str="Hello World";//要发送的数据
        //创建一个要发送的数据包,包括发送数据,数据长度,接受端IP地址以及端口号
        DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),
                InetAddress.getByName("localhost"),8954);
        System.out.println("发送消息");
        ds.send(dp);  //发送数据
        ds.close();   //释放资源
    }
}

发送端可以不指定端口号的3000,这样系统就会在每次发送时
自己随机分配一个。
运行起来:

发送信息

同时接受端发生改变:

等待接收数据

Hello world from 127.0.0.1:3000

参考文档:
Java基础入门 传智博客高教产品研发部 

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
HvTJUzsxOBtS